728x90
๋ฐ์ํ
๋ฌธ์ ์ค๋ช
๋น๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ ์์ด์ด ์ฃผ์ด์ง ๋, ๋ค์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ถ๋ถ ์์ด์ ์ฐพ์ผ๋ ค๊ณ ํฉ๋๋ค.
- ๊ธฐ์กด ์์ด์์ ์์์ ๋ ์ธ๋ฑ์ค์ ์์์ ๊ทธ ์ฌ์ด์ ์์๋ฅผ ๋ชจ๋ ํฌํจํ๋ ๋ถ๋ถ ์์ด์ด์ด์ผ ํฉ๋๋ค.
- ๋ถ๋ถ ์์ด์ ํฉ์ 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์ ๋ถ๋ถ ์์ด๋ก ๋ง๋ค ์ ์๋ ๊ฐ์ ๋๋ค.
์ ์ถ๋ ฅ ์
sequence | k | result |
[1, 2, 3, 4, 5] | 7 | [2,3] |
[1, 1, 1, 2, 3, 4, 5] | 5 | [6,6] |
[2, 2, 2, 2, 2] | 6 | [0,2] |
์ ์ถ๋ ฅ ์ ์ค๋ช
- ์
์ถ๋ ฅ ์ #1
- [1, 2, 3, 4, 5]์์ ํฉ์ด 7์ธ ์ฐ์๋ ๋ถ๋ถ ์์ด์ [3, 4]๋ฟ์ด๋ฏ๋ก ํด๋น ์์ด์ ์์ ์ธ๋ฑ์ค์ธ 2์ ๋ง์ง๋ง ์ธ๋ฑ์ค 3์ ๋ฐฐ์ด์ ๋ด์ [2, 3]์ ๋ฐํํฉ๋๋ค.
- ์
์ถ๋ ฅ ์ #2
- [1, 1, 1, 2, 3, 4, 5]์์ ํฉ์ด 5์ธ ์ฐ์๋ ๋ถ๋ถ ์์ด์ [1, 1, 1, 2], [2, 3], [5]๊ฐ ์์ต๋๋ค. ์ด ์ค [5]์ ๊ธธ์ด๊ฐ ์ ์ผ ์งง์ผ๋ฏ๋ก ํด๋น ์์ด์ ์์ ์ธ๋ฑ์ค์ ๋ง์ง๋ง ์ธ๋ฑ์ค๋ฅผ ๋ด์ [6, 6]์ ๋ฐํํฉ๋๋ค.
- ์
์ถ๋ ฅ ์ #3
- [2, 2, 2, 2, 2]์์ ํฉ์ด 6์ธ ์ฐ์๋ ๋ถ๋ถ ์์ด์ [2, 2, 2]๋ก 3๊ฐ์ง ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ, ๊ธธ์ด๊ฐ ์งง์ ์์ด์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ ์์ชฝ์ ๋์จ ์์ด์ ์ฐพ์ผ๋ฏ๋ก [0, 2]๋ฅผ ๋ฐํํฉ๋๋ค.
ํ์ด
- ๋น๋ด๋ฆผ์ฐจ์์ด ์ค๋ฆ์ฐจ์์ด๋ผ๋ ๋ง์ผ๊น?
- ๊ทธ๋ฆฌ๊ณ ์ฌ๋ผ์ด๋ฉ ๋์ด๋ก ๋จน์ ์ ๋ค์ ํฉ์ฐํ๊ณ ๋์น๋ฉด ๋ค๋ก ๋ฅ ์ธ๋ฉด์ ์ญ์ฑ ์งํํ๋ฉด ๋๋๊ฑด๊ฐ?
- ์ ๊ทธ๋ฆฌ๊ณ ์์ด์ k๊ฐ์ด ์์ผ๋ฉด ๊ธธ์ด 1 ์ง๋ฆฌ ๋ถ๋ถ ์์ด์ ๋ฆฌํดํ๋ฉด ๋๋๊ฑด๊ฐ? ์๊ฑด ๋ฐ๋ก ํ
์คํธ ํด๋ณด์.
- ์๋ค? (์ผ์ชฝ)
- ๊ทธ๋ฆฌ๊ณ ์ด์ฐจํผ k๋ ํญ์ seq์ ๋ถ๋ถ ์์ด๋ก ๋ง๋ค ์ ์๋ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๋ฌด์กฐ๊ฑด ์๋ค.
- ๊ทธ๋ผ ๋งจ ์์์ ์๊ธฐ ๊ฑธ๋ฆฌ๋ฉด ํ๋ฒ ์ฑ๋ก ์ณ์ฃผ๊ณ else๋ถํฐ ์งํํ๋ฉด ๋ ๋ฏ? (์ค๋ฅธ์ชฝ)
- ์ง์-!
def solution(sequence, k):
answer = []
short = 10000000
index = 0
head = 0
tail = 0
total = 0
if k in sequence:
i = sequence.index(k)
return [i,i]
else:
for i,v in enumerate(sequence):
head = i
total += v
if total == k:
answer.append([tail, head])
if head-tail < short:
short = head-tail
index = len(answer)
total -= sequence[tail]
tail += 1
elif total > k:
while total > k:
total -= sequence[tail]
tail += 1
if total == k:
answer.append([tail, head])
if head-tail < short:
short = head-tail
index = len(answer)
total -= sequence[tail]
tail += 1
return answer[index-1]
728x90
๋ฐ์ํ
'๊ฒ์ ํ๋ก๊ทธ๋๋ฐ > Python ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค์ Problem Solving ํ๊ฐ ๋ฆฌํฌํธ๋๊ฒ ์๊ฒผ๋ค. (0) | 2023.06.23 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค LV2 ๊ด๋ฌผ ์บ๊ธฐ (0) | 2023.06.23 |
ํ๋ก๊ทธ๋๋จธ์ค LV1 ๊ณต์ ์ฐ์ฑ (0) | 2023.06.23 |
ํ๋ก๊ทธ๋๋จธ์ค LV1 ๋ฌ๋ฆฌ๊ธฐ ๊ฒฝ์ฃผ (0) | 2023.06.23 |
ํ๋ก๊ทธ๋๋จธ์ค LV1 ์ถ์ต ์ ์ (0) | 2023.06.22 |