https://www.acmicpc.net/problem/2018
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)
'🔅코딩테스트 공부🔅 > ❗백준' 카테고리의 다른 글
[백준] 21921번 블로그(python) (0) | 2023.03.03 |
---|---|
[백준] 1940번 주몽(python) (0) | 2023.03.03 |
[백준] 14567번 선수과목(python) (0) | 2023.03.03 |
[백준] 1197번 최소 스패닝 트리(python) (0) | 2023.03.02 |
[백준] 1749번 점수따먹기(python)(누적합) (0) | 2023.03.02 |
댓글