Notice
Recent Posts
Recent Comments
Link
HwangHub
[투포인터 / python] 백준 25916. 싫은데요 본문
https://www.acmicpc.net/problem/25916
첫 번째 풀이
우선, 조건에 따라 '연속'된 구멍의 '합'이 햄스터의 부피보다 작아야 하므로 투포인터로 풀면 되겠다고 판단했다.
이제 로직을 구성하면 되는데, 일정 연산 결과가 조건보다 작으면 냅다 오른쪽 포인터를 진행시키는게 일반적이라 생각했는데, 이번 문제에서는 포인터가 가리키는 범위의 합이 항상 햄스터의 부피 이하여야 하므로 오른쪽 포인터를 진행한 상황에서의 값이 몇인지 체크하고, 부피 이하로 들어올 경우 오른쪽 포인터를 진행시킨 뒤에 max 값(이후 결과값)을 저장했다. 이를 통해 모든 경우에서 가장 컸던 합을 출력하면 문제에서 원하는 답이 된다.
결과 : 성공
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
li = list(map(int, input().split()))
left, right = 0, 1
sum = li[left]
mx = 0
while True:
if right >= n: break
if right < n:
if sum+li[right] <= m:
sum += li[right]
mx = max(mx, sum)
right += 1
elif sum+li[right] > m:
sum -= li[left]
left += 1
print(mx)
'workspace > 알고리즘' 카테고리의 다른 글
[백트래킹 / python] 백준 6603. 로또 (0) | 2023.03.28 |
---|---|
[소수구하기 / python] 1929. 소수 구하기 (0) | 2023.03.27 |
[투포인터 / python] 백준 17609: 회문 (0) | 2023.03.25 |
[DP / python] 백준 1793 : 타일링 (0) | 2023.03.16 |
[BruteForce / python] 백준 13423: Three Dots (0) | 2023.03.09 |
Comments