📚 출처 - 프로그래머스
문제 설명
Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다.
자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요.
제한사항
입출력 예
n | result |
---|---|
15 | 4 |
입출력 예 설명
입출력 예#1
문제의 예시와 같습니다.
- 자기 자신의 수를 제외한 것 중, 수를 일단 어디까지 비교해봐야 하나 분석해봤다.
15와 같은 경우는 7+8이 마지막, 19같은 경우는 9+10이 마지막, 20은 10이 마지막이다.
다음과 같은 경우들을 토대로 홀수는 n/2+1까지, 짝수는 n/2까지 비교하는 루틴을 볼 수 있다.
- 아 그리고, 자기 자신의 경우의 수 1가지가 있는데 그 1가지를 위해 끝까지 검사해주는 것은 효율성에 문제가 생긴다. 따라서 자기 자신의 경우의 수는 처음부터 추가해주고 시작했다.
def solution(n):
count = 1
for i in range(1, n//2+1):
tmp = 0
for j in range(i, n//2+2):
tmp += j
if (tmp >= n):
if tmp == n:
count += 1
else:
break
return count