python algorithm

숫자의 표현

문과 열등생 2024. 2. 22. 21:28

Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다.

1 + 2 + 3 + 4 + 5 = 15

4 + 5 + 6 = 15

7 + 8 = 15

15 = 15

 

[문제]

자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요.

 

[풀이]

def solution(n):
    answer = 1
    for i in range(1, n//2 + 1):
        total = 0
        while total < n:
            total += i
            if total == n:
                answer += 1
                break
            else: i += 1
    return answer

 

[풀이 방법]

1. 모든 수는 자기 자신으로 표현될 수 있다.

   : answer = 1로 설정 (최소 1 이상이기 때문) 

2. 2개의 숫자로 표현될 경우, 표현할 수 있는 가장 큰 수는 n/2 혹은 n/2와 n/2 + 1로 이루어진다.

   : 고려해야할 최대 숫자는 n/2 + 1

3. 연속된 숫자의 합

   : for 문을 통한 반복실행

4. 연속된 숫자의 합이 자기 자신보다 클 경우, 덧셈의 시작 숫자를 늘려야

   : while total < n