본문 바로가기
코딩테스트 연습/프로그래머스

[Python] 프로그래머스 (숫자의 표현)

by Lagooni 2021. 10. 7.

문제 설명

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

  • 1 + 2 + 3 + 4 + 5 = 15
  • 4 + 5 + 6 = 15
  • 7 + 8 = 15
  • 15 = 15

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

제한사항

  • n은 10,000 이하의 자연수 입니다.

입출력 예

n result
15 4

입출력 예 설명

입출력 예#1
문제의 예시와 같습니다.


풀이방법

  • 완전탐색
  • 연속된 숫자로 n이 만들어지는지를 판별하는 함수를 만든다(checkFinn)
    • 처음은 1부터 n 전까지 더하며, 다음은 2부터, 그 다음은 3부터....이런식으로 숫자를 더해가며 n이 된다면 True를 반환하는 함수이다.
    • (테스트 효율성을 통과하기 위해선 _sum이 n을 넘어가버리면 계산하지 않도록 조건문을 추가해주어야 한다. 처음에 안넣어줬더니 실패..ㅠ)
  • 만들어진 함수를 사용하여 1~n의 숫자까지 True가 반환될때마다 count를 세 주면 된다.
n = 15

def solution(n):
    count = 0
    for i in range(1, n+1):
        if checkFinn(i, n):
            count += 1
    return count

def checkFinn(start, n):
    _sum = 0
    for i in range(start, n+1):
        _sum += i
        if _sum == n:
            return True
        elif _sum > n:
            break
    return False

print(solution(n))

댓글