1806-g4 성공
This commit is contained in:
47
workbook_8708/gold/1806-g4.py
Normal file
47
workbook_8708/gold/1806-g4.py
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
# 부분합
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
input = sys.stdin.readline
|
||||||
|
|
||||||
|
def solution():
|
||||||
|
n, s = map(int, input().rstrip().split())
|
||||||
|
|
||||||
|
lst = list(map(int, input().rstrip().split()))
|
||||||
|
|
||||||
|
l, r = 0, 0
|
||||||
|
now = lst[0]
|
||||||
|
result = 100001
|
||||||
|
while l <= r:
|
||||||
|
if now >= s:
|
||||||
|
while now >= s:
|
||||||
|
now -= lst[l]
|
||||||
|
l += 1
|
||||||
|
result = min(result, r-(l-1)+1)
|
||||||
|
|
||||||
|
if r >= n-1:
|
||||||
|
break
|
||||||
|
if now < s:
|
||||||
|
r += 1
|
||||||
|
now += lst[r]
|
||||||
|
|
||||||
|
if result > 100000:
|
||||||
|
result = 0
|
||||||
|
|
||||||
|
print(result)
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
solution()
|
||||||
|
|
||||||
|
"""
|
||||||
|
걸린 시간: 18분
|
||||||
|
|
||||||
|
시간 복잡도: 두 포인터가 모든 원소를 가르키는 것이 최악이므로 O(n)이다.
|
||||||
|
|
||||||
|
해설: 투 포인터를 활용하여 오른쪽으로 값을 추가하고, 왼쪽으로 값을 제외한다.
|
||||||
|
현재 값이 s보다 크면, s보다 값이 작아질때까지 왼쪽 포인터를 오른쪽으로 옮기면서 값을 뺀다.
|
||||||
|
현재 값이 s보다 작으면 오른쪽 포인터를 오른쪽으로 옮기면서 값을 더한다.
|
||||||
|
마지막까지 result 값이 100000보다 크면 답이 없는 것이므로 result를 0으로 만든다.
|
||||||
|
"""
|
||||||
Reference in New Issue
Block a user