출처: 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 이하의 자연수 입니다.
입출력 예
n | result |
---|---|
15 | 4 |
입출력 예 설명
입출력 예#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같은 다른 변수명을 습관화 해야겠다