- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12924
Lv2 문제이고, 스스로 푼 문제다
어려운 문제는 아니지만 코드 작성을 빠르고 정확하게 연습하려고 기록해본다
문제를 읽고 처음에는 dp인가? 싶었지만 문제를 잘 읽어보니 연속되는 숫자들의 합이 n이 되는 가짓수를 구하는 것이었다
해결책으로 완전 탐색을 돌면서 i부터 연속된 숫자들을 계속 더해가다가 n이상이 되었을 때 종료한 후
(n일 때만 break하면 n보다 크게 되었을 때 멈출 수 있는 방법이 없어서 무한 루프 가능성이 있다.
temp > n인 경우는 temp == n가 우리의 목표라서 의도와 맞지 않다)
while문이 멈춘 다음 temp == n 인 경우가 우리가 찾는 것이므로 그 경우의 수를 센 다음 출력하면 된다
- 정답 풀이 :
def solution(n):
answer = 0
for i in range(1, n + 1):
temp = 0
while True:
if temp >= n:
break
temp += i
i += 1
if temp == n :
answer += 1
return answer