🔅코딩테스트 공부🔅/❗백준
[백준] 2018 수들의 합(python)
윤무무
2023. 3. 3. 16:21
https://www.acmicpc.net/problem/2018
2018번: 수들의 합 5
어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한
www.acmicpc.net
1. 난이도 실버5 (🥈)
2. 문제 해결 방법
투 포인터를 이용해 문제를 해결했다. 투 포인터란 list를 순차적으로 접근할 때 start 와 end라는 두 점으로 각각 기록하는 알고리즘이다.
3. 내가 작성한 코드
Version1
n = int(input())
num = [i for i in range(1,n+1)]
interval_sum = 0
cnt = 0
end = 0
for start in range(n):
while interval_sum < n and end < n:
interval_sum += num[end]
end+=1
if interval_sum == n:
cnt+=1
interval_sum -= num[start]
print(cnt)
Version2
n = int(input())
interval_sum = 1
cnt = 1
end = 1
start = 1
while end != n:
if interval_sum == n:
cnt+=1
end+=1
interval_sum += end
elif interval_sum > n:
interval_sum -= start
start+=1
else:
end+=1
interval_sum+=end
print(cnt)