[프로그래머스] 파이썬 코딩테스트 연습 LV2(숫자의 표현)

728x90

1. 숫자의 표현

 

문제 설명


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

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

내 풀이(오답)

def solution(n):
    answer = 0
    total_sum = 0

    for i in range(1, n + 1):
        total_sum += i
        if total_sum == n:
            answer += 1
        elif total_sum > n:
            break

    return answer

이 방식은 연속된 자연수의 합을 모두 계산하지 않고, total_sum이 n을 초과하는 순간에 반복문을 종료하기 때문에 정확한 결과를 얻을 수 없다

 

예를 들어, solution(15)을 호출할 때, 가능한 연속된 자연수의 합은 [1+2+3+4+5], [4+5+6], [7+8]로 세 가지이지만, 코드는 [1+2+3+4+5]에서 반복문이 종료되어 정확한 결과를 반환하지 못한다.

 

다른 사람 풀이

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

 

728x90