ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
1806๋ฒ: ๋ถ๋ถํฉ
๋ฌธ์ 10,000 ์ดํ์ ์์ฐ์๋ก ์ด๋ฃจ์ด์ง ๊ธธ์ด N์ง๋ฆฌ ์์ด์ด ์ฃผ์ด์ง๋ค. ์ด ์์ด์์ ์ฐ์๋ ์๋ค์ ๋ถ๋ถํฉ ์ค์ ๊ทธ ํฉ์ด S ์ด์์ด ๋๋ ๊ฒ ์ค, ๊ฐ์ฅ ์งง์ ๊ฒ์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
www.acmicpc.net
๋ฌธ์ ํ์ด
์์ ๋ค๋ฃฌ ์๋ค์ ํฉ 2์ ์ ์ฌํ ๋ฌธ์ ์ด๋ค. ๋ค๋ฅธ ์ ์ด ์๋ค๋ฉด ํฉ์ด S ์ด์์ด ๋๋ ๊ฒ ์ค, ๊ฐ์ฅ ์งง์ ๊ฒ์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ ๊ฒ์ด๋ค. ์๋ค์ ํฉ 2์ ๋ง์ฐฌ ๊ฐ์ง๋ก ์ฌ์ ์ ๋์ ํฉ์ ๋ํ ๊ฐ์ ๊ณ์ฐํ๊ณ ์์, ๋ ์ง์ ์ ๋ฌ๋ฆฌํ์ฌ ์์ฐจ์ ์ผ๋ก ํ์์ ์งํํ๋ฉด ๊ฒฝ์ฐ์ ์๋ฅผ ๊ณ์ฐํ ์ ์๋ค.
์ฝ๋
from sys import stdin
if __name__ == '__main__':
answer = None
start, end = 0, 1
n, s = map(int, stdin.readline().split())
nums = list(map(int, stdin.readline().split()))
subtotal = [0] * (n + 1)
for i in range(1, n + 1):
subtotal[i] = subtotal[i - 1] + nums[i - 1]
while start < n:
if subtotal[end] - subtotal[start] >= s:
answer = min(answer, end - start) if answer else end - start
start += 1
elif end == n:
start += 1
else:
end += 1
print(answer if answer else 0)
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 1182 ๋ถ๋ถ์์ด์ ํฉ (0) | 2020.08.15 |
---|---|
๋ฐฑ์ค: 1644 ์์์ ์ฐ์ํฉ (0) | 2020.08.14 |
๋ฐฑ์ค: 2003 ์๋ค์ ํฉ 2 (0) | 2020.08.13 |
๋ฐฑ์ค: 2225 ํฉ๋ถํด (0) | 2020.08.12 |
๋ฐฑ์ค: 3055 ํ์ถ (0) | 2020.08.11 |