반응형

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

 

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

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

programmers.co.kr

문제 설명

n이라는 숫자가 있을 때, 이 숫자를 연속된 수들의 합으로 나타낼 수 있는 가지 수를 구하는 문제이다.

예를 들어, n = 15이면

 

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

 

이렇게 나타낼 수 있으므로 n=15일 때의 정답은 4이다.


풀이 과정

일일이 확인해가며 해당 경우에 참인지 거짓인지를 판별해야 하는 문제이다.

일단, i = n인 경우에는 무조건 해당되므로 answer은 1부터 시작하며,

절반까지만 검사하면 된다.

 

예를 들어, n = 15일 경우 8이상부터는 어떤 수를 더하더라도 15를 넘기기 때문이다.

수들을 더해가며 n일 경우에만 count 를 하나씩 늘려주면 된다.

def solution(n):
    answer = 1
    for i in range(1, n // 2 + 1):
        stack = []
        for j in range(i, n + 1):
            stack.append(j)
            if sum(stack) >= n:
                break
        if sum(stack) == n:
            answer += 1

    return answer

 

https://github.com/HongEunho

전체 문제 & 코드는 위의 깃에 정리되어 있습니다.

팔로우 & 맞팔은 환영입니다 !

반응형

+ Recent posts