- 문제 : 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

+ Recent posts