프로그래머스/2단계
숫자의 표현
js0616
2024. 4. 30. 21:25
어떤 숫자 n 에 대하여 연속하는 자연수의 합으로 해당 숫자가 몇개 나오는지 확인 하는 문제
1+2+3+4+5 = 15
2+3+4+5+6 > 15 ... x
3+4+5+6 > 15 ... x
...
위와 같이 1부터 하나씩 더하면서 n 과 비교하는 방법이 될 수 있으나
n/2 이후의 구간부터는 사실상 의미없이 버려지는 부분이다.
7+8 = 15 .. o
8+9 > 15 .. x
9+10 > 15 .. x
...
15 = 15 ... o
따라서 이를 반영하기 위해서 다음과 같이 코드를 짜보았다.
n 이 홀수 / 짝수 일 경우에 따라서 그 절반 or 절반을 반올림 한 숫자부터
1씩 감소하며 연속하는 숫자의 합을 구하도록 하였다.
def solution(n):
# 자기자신
answer = 1
# n이 1일경우 종료
if n == 1 :
return answer
else :
if n%2 :
i = (n//2) + 1
else :
i = n//2
for j in range(i,0,-1) :
sum = 0
while sum < n and j > 0 :
sum += j
if sum == n:
answer += 1
break
else :
j -= 1
return answer
8 + 7 = 15 ... o
7 + 6 + 5 > 15 ... x
6 + 5 + 4 = 15 ... o
5 + 4 + 3 + 2+ 1 = 15
4 + 3 + 2 + 1 < 15 ..
3 ... < 15
2 ... < 15
1 ... < 15