https://www.acmicpc.net/problem/2018

투포인터로 start, end를 1부터 시작해서 구간의 합을 구하고 합이 n보다 작으면 end + 1, n보다 크면 start + 1 n이면 정답 카운트 하고 start + 1, end + 1을 해준다
n = int(input())
start, end = 1, 1
answer = 1
while True:
if start == n: break
temp = 0
for j in range(start, end+1):
temp += j
if temp >= n:
break
if temp == n:
answer += 1
start += 1
end += 1
elif temp < n:
end += 1
else:
start += 1
print(answer)
이렇게 풀어서 맞았지만 괜찮은 코드를 발견해서 하나 더 추가한다.
n = int(input())
start, end = 1, 1
total = 1
answer = 1
while end != n:
if total == n:
answer += 1
end += 1
total += end
elif total > n:
total -= start
start += 1
else:
end += 1
total += end
print(answer)