DevYoon
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฐ์๋ ๋ถ๋ถ ์์ด์ ํฉ (Python) ๋ณธ๋ฌธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฐ์๋ ๋ถ๋ถ ์์ด์ ํฉ (Python)
gimewn 2023. 4. 7. 00:20link ๐ https://school.programmers.co.kr/learn/courses/30/lessons/178870
๋ฌธ์ ์ค๋ช
๋น๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ ์์ด์ด ์ฃผ์ด์ง ๋, ๋ค์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ถ๋ถ ์์ด์ ์ฐพ์ผ๋ ค๊ณ ํฉ๋๋ค.
- ๊ธฐ์กด ์์ด์์ ์์์ ๋ ์ธ๋ฑ์ค์ ์์์ ๊ทธ ์ฌ์ด์ ์์๋ฅผ ๋ชจ๋ ํฌํจํ๋ ๋ถ๋ถ ์์ด์ด์ด์ผ ํฉ๋๋ค.
- ๋ถ๋ถ ์์ด์ ํฉ์ k์ ๋๋ค.
- ํฉ์ด k์ธ ๋ถ๋ถ ์์ด์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ ๊ธธ์ด๊ฐ ์งง์ ์์ด์ ์ฐพ์ต๋๋ค.
- ๊ธธ์ด๊ฐ ์งง์ ์์ด์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ ์์ชฝ(์์ ์ธ๋ฑ์ค๊ฐ ์์)์ ๋์ค๋ ์์ด์ ์ฐพ์ต๋๋ค.
์์ด์ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด sequence์ ๋ถ๋ถ ์์ด์ ํฉ์ ๋ํ๋ด๋ ์ ์ k๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ถ๋ถ ์์ด์ ์์ ์ธ๋ฑ์ค์ ๋ง์ง๋ง ์ธ๋ฑ์ค๋ฅผ ๋ฐฐ์ด์ ๋ด์ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์. ์ด๋ ์์ด์ ์ธ๋ฑ์ค๋ 0๋ถํฐ ์์ํฉ๋๋ค.
์ ํ์ฌํญ
- 5 ≤ sequence์ ๊ธธ์ด ≤ 1,000,000
- 1 ≤ sequence์ ์์ ≤ 1,000
- sequence๋ ๋น๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ๋์ด ์์ต๋๋ค.
- 5 ≤ k ≤ 1,000,000,000
- k๋ ํญ์ sequence์ ๋ถ๋ถ ์์ด๋ก ๋ง๋ค ์ ์๋ ๊ฐ์ ๋๋ค.
def solution(sequence, k):
answer = []
end = 0
sums = 0
min_ans = 1e9
for start in range(len(sequence)):
while end < len(sequence) and sums < k:
sums += sequence[end]
end += 1
if sums == k:
if min_ans > end-start:
answer = [start, end-1]
min_ans = min(min_ans, end-start)
sums -= sequence[start]
return answer
- ์ฐ์๋ ๋ถ๋ถ ์์ด์ ํฉ => ๋ณด์๋ง์ ํฌํฌ์ธํฐ๋ค! ํ๊ณ ๋ ์ฌ๋ ธ๋ ๋ฌธ์
- start๋ฅผ for๋ฌธ์ผ๋ก ์ํํ๋ฉด์, ๊ฐ ์์๋ง๋ค end๋ฅผ ํ๋์ฉ ๋๋ ค๊ฐ๋ฉฐ ํฉ์ด k๊ฐ ๋๋ ์์ด์ ๊ธธ์ด๋ฅผ ๊ตฌํด์ค๋ค.
- ๊ธธ์ด๊ฐ ๊ฐ์ฅ ์งง์ผ๋ฉด์ / ์์ ์์๊ฐ ๊ฐ์ฅ ์์์ผ ํ๊ธฐ ๋๋ฌธ์, ๊ธธ์ด๊ฐ min_ans๋ณด๋ค ์์ ๊ฒฝ์ฐ (๊ธธ์ด๊ฐ ๊ฐ์ฅ ์งง์) ์๋ง answer๋ฅผ ๊ต์ฒดํด์ฃผ์๋ค.
- start๋ 0๋ถํฐ len(sequence)-1๊น์ง์ด๋ฏ๋ก, ์๋์ผ๋ก ์์ ์์๊ฐ ๊ฐ์ฅ ์๊ธฐ ๋๋ฌธ!