Algorithm/Python

[파이썬/프로그래머스]숫자의 표현

박한결 2021. 3. 29. 17:24

링크 programmers.co.kr/learn/courses/30/lessons/12924

 

코딩테스트 연습 - 숫자의 표현

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

programmers.co.kr

문제 설명

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

1 + 2 + 3 + 4 + 5 = 15
4 + 5 + 6 = 15
7 + 8 = 15
15 = 15
자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요.

 

코드

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

첫번째 for문에서 i의 범위를 1<=i<n//2+1로 한 이유는 아래를 보면 알 수 있다. 만약 숫자를 표현하는 첫번째 숫자인 i가 n//2+1이 되면 어떤 수를 써서든 다른 수와 더했을 때 n보다 커질 수 밖에 없기 때문이다. Finn은 정말 특이한 친구인 것 같다.

n이 15일 경우 예시