반응형
https://www.acmicpc.net/problem/2018
2018번: 수들의 합 5
어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한
www.acmicpc.net
# 포인트
1. 애매할땐 print()를 하여 구체적인 값을 보고 코드를 수정해주기
n = int(input())
cnt,summ = 0,0
start, end = 1,1
while end<=n:
if summ == n:
print(start, end) #프린트를 찍으면 n=15일 경우, end가 15인 경우가 찍히지 않아 항상 cnt가 1개가 모자름
cnt+=1
summ-=start
start += 1
elif summ > n:
summ -= start
start += 1
else:
summ+=end
end+=1
print(cnt)
내 경우에는 #프린트를 찍으면 n=15일 경우, end가 15인 경우가 찍히지 않아 항상 cnt가 1개가 모자르게 나왔다.
그래서 14+15가 남아있는 경우만을 생각해 보니 else: 구문에서 end+=1이 먼저 나오고 그 다음에 summ에 더해줘야 했다. 그러기 위해서는 end의 초기값이 0으로 설정해야 했다.
n = int(input())
cnt,summ = 0,0
start, end = 1,0
while end<=n:
if summ == n:
cnt+=1
summ-=start
start += 1
elif summ > n:
summ -= start
start += 1
else:
end+=1
summ+=end
print(cnt)
반응형
'프로그래밍 > 알고리즘 & 자료구조' 카테고리의 다른 글
백준 1940 : 주몽 with 파이썬 (1) | 2024.02.01 |
---|---|
백준 1644 : 소수의 연속합 with 파이썬 (1) | 2024.01.31 |
백준 1806 : 부분합 with 파이썬 (0) | 2024.01.30 |
백준 2559 : 수열 with 파이썬 (2) | 2024.01.29 |
백준 14497 : 주난의 난 with 파이썬 (0) | 2024.01.28 |
댓글