1일 1PS 10일차!

📚 문제


골드 4

  • 합이 S 이상이 되는 것 중 제일 짧은 수열을 탐색해야한다.
  • 합이 S 이하이면 오른쪽의 수를 하나 더 더하고, S 이상이면 왼쪽의 수를 덜 더한다.

💡 포인트


  1. start, end 지점을 놓고 S 를 비교하며 둘 중 하나의 값을 올린다.

💻 코드



N, S = map(int, input().split())
arr = list(map(int, input().split()))

start, end = 0, 0
sum = arr[0]
ans = 100001

while True:
    if sum < S:
        end += 1
        if end == N:
          break
        sum += arr[end]
    else:
        sum -= arr[start]
        ans = min(ans, end - start + 1)
        start += 1

print(ans if ans != 100001 else 0)

업데이트:

댓글남기기