๋ฌธ์
์์ด์์ ์ฐ์๋ ์๋ค์ ๋ถ๋ถํฉ
์ค์์ ํฉ์ด S์ด์
์ด๊ณ ๊ธธ์ด๊ฐ ๊ฐ์ฅ ์งง์ ๊ตฌ๊ฐ
์ ๊ธธ์ด๋ฅผ ๊ตฌํด์ผํ๋ค.
์ ๊ทผ
๊ฐ๋จํ๊ฒ ์๊ฐํด๋ดค์ ๋, ์์ด์ ๋ชจ๋ ์์๋ค์ ๋ํด์ ํด๋น ์์๋ก ์์ํ๋ ๋ชจ๋ ๊ตฌ๊ฐ์ ํ์ํด๋ณด๋ฉด ๊ฐ๋ฅํ๊ธด ํ๋ค.
๋ฌผ๋ก ์ด๋ ๊ฒ ํ๋ฉด O(N^2)๋ก ํ์์์์ด ๋ ๊ฒ์ด๋ค. (0.5์ด์ ์๊ฐ ์ ํ..)
์ด๋ค ๊ตฌ๊ฐ์ ํฉ
์ด๋ผ๊ณ ํ๋ฉด ๋จผ์ ์ธ๊ทธ๋จผํธ ํธ๋ฆฌ๊ฐ ๋ ์ค๋ฅด๊ธด ํ์ง๋ง, ๋ชจ๋ ๊ตฌ๊ฐ์ ๋ช
์ํด์ค์ผํ๋ฏ๋ก ์ด ๋ฌธ์ ์๋ ๋ง์ง ์๋๋ค.
(์คํ๋ ค O(N^2 logn) ์ผ ๊ฒ ๊ฐ์๋ฐ?)
์ฌ๊ธฐ์๋ ๊ฐ๋จํ๊ฒ ํฌํฌ์ธํฐ ๋ฐฉ์์ผ๋ก O(N) ์์ ํ์์ ๋๋ผ ์ ์๋ค.
code
N, S = map(int, input().split())
seq = list(map(int, input().split()))
s = 0
sum = 0
answer = 0
for e in range(N):
sum += seq[e]
while sum >= S:
len = e - s + 1
answer = len if answer == 0 else min(answer, len)
sum -= seq[s]
s += 1
print(answer)
ํฌํฌ์ธํฐ๋ฅผ ์ธ ๋๋ s๋ e๋ ํ๋๋ฅผ ๋ฐ๋ณต๋ฌธ์์ ์งํํ๊ณ ๊ทธ ์์์ ๋๋จธ์ง ํ๋๋ฅผ ์กฐ๊ฑด์ ๋ง๊ฒ ๋ก๊ฒจ์ฃผ๋(?) ๋ฐฉ์์ผ๋ก ํ๋๊ฒ ํธํ ๊ฒ ๊ฐ๋ค.
'๐ค ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[baekjoon] 1162 ๋๋กํฌ์ฅ (0) | 2021.08.05 |
---|---|
[baekjoon] 2243 ์ฌํ ์์ (cpp) (0) | 2021.08.03 |
[baekjoon] 11003 ์ต์๊ฐ ์ฐพ๊ธฐ (python) (0) | 2021.07.27 |
[baekjoon] 2580 ์ค๋์ฟ (python) (0) | 2021.07.26 |
[baekjoon] 15686 ์นํจ ๋ฐฐ๋ฌ (python3) (0) | 2021.07.26 |