알고리즘 풀이/Python

[Python] 숫자의 표현 (프로그래머스 Lv2 파이썬)

모남(monam2) 2023. 8. 21. 21:30
  • 숫자의 표현
문제 설명

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

  • 1 + 2 + 3 + 4 + 5 = 15
  • 4 + 5 + 6 = 15
  • 7 + 8 = 15
  • 15 = 15

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

제한사항
  • n은 10,000 이하의 자연수 입니다.

입출력 예nresult
15 4

 

 

문제 이해

- 연속되는 수들을 더해서 n의 값이 되도록 만드는 식의 갯수를 찾는 문제입니다.

- 아이디어 자체는 쉬운데, 구현에 있어서 쉽게 떠올리지 못할 수 있습니다.

 

문제 풀이

- 처음 풀이할 때 재귀로 해결할 생각을 했는데, 완전탐색으로 단순하게 해결할 수 있는 문제였습니다.

- 1부터 n까지의 수를 반복문을 돌면서 해당 수부터 n까지 1씩 증가시키며 합을 구합니다.

- 만약 연속된 수의 합이 n과 같으면 정답이고, n을 초과하는 경우엔 패스합니다.

 

코드

def solution(n):
    total = 0
    for i in range(1,n+1):
        sum_i =0
        for j in range(i, n+1):
            sum_i += j
            if sum_i == n:
                total+=1
                break
            elif sum_i > n:
                break
    return total