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

2023. 2. 14. 14:23프로그래밍/자료구조 및 알고리즘

반응형

문제 설명

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 이하의 자연수 입니다.

풀이

손풀이를 간단히 첨부하겠다. 

처음에는 등차수열 공식으로 접근해보려고 했는데, 이것을 프로그래밍으로 구현을 하기에 괴리감이 있었다. 🥲

두번째로는, 예시 케이스를 보며 규칙성을 확보하여, 이에 대한 수도코드를 짜보았다. 다행히 예외사례 없이 성공하였다.

 

아이패드로 작성한 보잘 것 없는 수도코드 예이다.

반응형

핵심은, k개의 수라면 (1+.....+k)만큼 n에서 뺀 수가, k로 나누어지는지 여부를 k를 1부터 증가시키면서, n이 0이 될때까지 판단하면 되는 것이다.

 

풀고난 후, 등차수열 공식을 구현해서 풀어내신 분들도 계신 것을 확인하였다.

 

코드 전문

def solution(n):
    # 연속된 수니까, 각 수 간의 차가 c로 이루어져 있다고 보고. 
    # 수의 차(누적 c)를 n에서 빼준 값을 수의 차(c)로 나누었을 때 나누어 떨어지면, 이 수는 연속된 자연수들로 표현할 수 있다.
    answer = 0
    c = 0
    n -= c
    
    while n > 0 :
        c += 1
        n -= c
        if n % c == 0 : 
            answer += 1
    
    return answer

 


 

감사합니다. 좋은하루 되세요.

반응형