본문 바로가기

Python/코딩테스트

[프로그래머스/python] 코딩테스트 연습 Lv.2 (7월 첫 번째 주 2)

728x90

숫자의 표현

문제 설명

입출력 예

Solution

def solution(n):
    answer = 1 #표현 방법의 수(return 값)
    k = 1 #첫째 항
    while(k<=(n/2)):
        sum = 0 #수열 합
        i = k #첫째 항 저장
        while(sum<=n):
            sum+=i
            if sum==n:
                answer+=1 #방법의 수 count
                break
            i+=1 #현재 항+1 -> 다음 항
        k+=1 #첫째 항 +1
    return answer

15=15와 같이 표현 방법의 수는 본인만 수열에 포함하여 합하는 경우가 무조건 있으므로, answer = 1로 시작

그 다음은 두 개의 수를 더하는 경우인데, 이는 7+8과 같이 15의 절반이 첫째 항이 되는 경우가 최대인 경우이므로, 첫째 항을 표현하는 k를 while문을 통해 n/2까지만 반복

Result

728x90