Home [lvl2]숫자의 표현
Post
Cancel

[lvl2]숫자의 표현

출처: Programmers > 코딩테스트 연습 > 연습문제 > 숫자의 표현

문제 설명:

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

입출력 예

nresult
154

입출력 예 설명

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

코드 설명:

  • 2중 for문을 사용하여 경우의 수를 다 구하고, 합이 숫자보다 넘어가면 break를 걸어줬다

코드:

1
2
3
4
5
6
7
8
9
10
11
def solution(n):
    answer = 0
    for i in range(1, n+1):
        summ = 0
        for j in range(i, n+1):
            summ += j
            if summ == n: 
                answer += 1
            elif summ > n:
                break
    return answer

우수답변자 코드:

  • list comprehension을 len과 함께 써서 사용하여 간결하다
  • 2씩 늘리는 for문을 사용한 뒤, if문으로 n % i ==0 를 걸어줬다
    1
    2
    
    def solution(num):
      return len([i  for i in range(1,num+1,2) if num % i == 0])
    

우수답변자2 코드:

  • 나와 같지만 while문으로 썼다
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    def solution(num):
      answer = 0
      for i in range(1, num+1):
          summ = 0
          while (summ < num):
              summ += i
              i += 1
          if summ == num:
              answer += 1
      return answer
    

피드백:

  • 변수명을 지을때 파이썬에 함수로 있는 sum을 피하고자 m을 하나 더 덧붙혀 summ이라고 지었는데, 합계를 의미하는 total같은 다른 변수명을 습관화 해야겠다
This post is licensed under CC BY 4.0 by the author.

[lvl2]이진 변환 반복하기

[lvl2]다음 큰 숫자