본문 바로가기
Tests/프로그래머스

[Programmers] 숫자의 표현

by 코딩하는 금융인 2020. 7. 20.

문제. 숫자의 표현


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

출처 : 프로그래머스 Level 2 숫자의 표현


나의 풀이

def solution(n):
    answer = 0
    for i in range(1,n+1): # 자연수이므로 1부터 시작
        k = 0
        for j in range(i,n+1): # 연속된 수로 n을 만족시킨다면 break로 넘어가고 answer에 count 1
            k += j
            if k ==n:
                answer +=1
                break
            elif k >n:
                break
    return answer

연속된 숫자이므로 1부터 경우의 수를 합산하는 방식이 합리적이라고 생각하여 for문을 겹쳐 사용하여 문제를 풀었습니다.

 

다른 사람의 풀이

def expressions(num):
    return len([i  for i in range(1,num+1,2) if num % i is 0])

해당 코드를 짜신 분의 경우, 연속된 자연수의 합의 개수와 n보다 작은 홀수로 나누어 떨어지는 수의 개수가 같다는 것을 알고 한 줄의 코드로 간단하게 짠 것 같습니다. 같은 알고리즘 문제에도 여러 가지의 답안이 나올 수 있다는 것을 알 수 있었습니다.

반응형

댓글