on my way
[백준 2018번] 수들의 합 5 (Python3, 실버5) 본문
반응형
import sys
N = int(sys.stdin.readline())
start, end, total, result = 1, 1, 1, 0
while end <= N:
if total == N:
result += 1
end += 1
total += end
elif total < N:
end += 1
total += end
else:
total -= start
start += 1
print(result)
start부터 end까지 투포인터로 부분합이 N인지 확인한다.
0. start, end는 모두 1에서 시작. total 1은 초기값이다. result는 0부터 시작.
1. total == N 이면 result++, end+=1, total에 end를 더한다
2. total이 N 미만이면, end+=1, total에 end를 더한다.
3. total이 N 이상이면, total에 start를 빼고, start+=1
end 이동으로 구간을 확장시키고, 구간합에 더하고.
구간합에서 start를 빼고 start 이동으로 구간을 축소시킨다.
이 순서가 헷갈려서 처음에 헤맴.
반응형
'algorithm > Python' 카테고리의 다른 글
[백준 1253번] 좋다 (Python3, 골드4) (0) | 2025.01.13 |
---|---|
[백준 1940번] 주몽 (Python3, 실버4) (0) | 2025.01.13 |
[프로그래머스 코딩테스트 연습] 연속 펄스 부분 수열의 합 (Python3) Lv3 (1) | 2024.09.13 |
[프로그래머스 도서실습 내일은 코딩테스트] 파트1.문자열 다루기 : 문자열 나누기 (Python3) (1) | 2024.09.01 |
[프로그래머스 코딩테스트 연습] 과일장수 (Python3) Lv1 (0) | 2024.09.01 |