๋ฐ์ํ
๐๋ฌธ์
โจํต์ฌ ๋ด์ฉ
ํฉ์ด k์ธ ๋ถ๋ถ ์์ด์ ์์ ์ธ๋ฑ์ค์ ๋ง์ง๋ง ์ธ๋ฑ์ค๋ฅผ ๋ฐํ
- ํฉ์ด k ์ธ ๋ถ๋ถ ์์ด์ด ์ฌ๋ฌ ๊ฐ ์ผ ๊ฒฝ์ฐ ๊ธธ์ด๊ฐ ์งง์ ์์ด ๋ฐํ
- ๊ธธ์ด๊ฐ ์งง์ ์์ด์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ ์์ ์ธ๋ฑ์ค๊ฐ ์์ ์์ด ๋ฐํ
๐คํด๊ฒฐ ์์ด๋์ด
์ ํ: ํฌํฌ์ธํฐ
1. start ํฌ์ธํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก end ํฌ์ธํฐ๋ฅผ ์ด๋์ํจ๋ค (for ๋ฌธ)
2. ๋ง์ฝ ๋ถ๋ถ ์์ด์ ํฉ์ด k๋ผ๋ฉด (์์ ์ธ๋ฑ์ค, ๋ง์ง๋ง ์ธ๋ฑ์ค, ๋ฐฐ์ด์ ๊ธธ์ด)์ ๊ฐ์ ans์ ์ถ๊ฐํ๋ค
3. ๋ง์ฝ ๋ถ๋ถ ์์ด์ด ํฉ์ด k ๋ณด๋ค ์๋ค๋ฉด, ํ์ฌ end ์์น์ ๊ฐ์ ๋ํด์ฃผ๊ณ end ๊ฐ์ ์ด๋์ํจ๋ค
4. ๋ง์ฝ ๋ถ๋ถ ์์ด์ ํฉ์ด k ๋ณด๋ค ํฌ๋ค๋ฉด, while ์กฐ๊ฑด์ ๋ง์กฑํ์ง ๋ชปํ๊ณ ๋ค์ start ๋ถ๊ธฐ๋ก ์ด๋ํ๋ค
5. ๊ธธ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ ๋ค ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค
๐ก์ฃผ์ํ ์
- while ์กฐ๊ฑด, ์ธ๋ฑ์ค ๋ฒ์๋ฅผ ์ฃผ์ํด์ผ ํ๋ค
โ ์ ๋ต ์ฝ๋ (Python)
๐ก sol1) start๋ฅผ for ๋ฌธ์ ์ฌ์ฉํ์ฌ ์ด๋
def solution(sequence, k):
n = len(sequence)
end = 0
total = 0
ans = []
# start๋ฅผ ๊ธฐ์ค์ผ๋ก ์ธ๋ฑ์ค ์ด๋
for start in range(n):
while total < k and end < n:
total += sequence[end] # ํ์ฌ ๊น์ง ๋ถ๋ถ ์์ด์ ํฉ ๊ณ์ฐ
end += 1 # ์ธ๋ฑ์ค ์ด๋
# ์กฐ๊ฑด ๋ง์กฑ์
if total == k:
ans.append((start, end -1, end - 1 - start)) # start, end, ๊ธธ์ด
# total > k or end >= n ์ด๋ฉด
total -= sequence[start] # start ์ด๋ ์ ๊ฐ ๋นผ์ฃผ๊ธฐ
# ๊ธธ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
ans.sort(key = lambda x: x[2])
# ์์ ์ธ๋ฑ์ค์ ๋ง์ง๋ง ์ธ๋ฑ์ค๋ง ๋ฐํ
return ans[0][:2]
๐ก sol2) start์ end๋ฅผ ์ง์ ์ด๋
def solution(sequence, k):
n = len(sequence)
start, end, sum = 0, 0, sequence[0]
ans = [0, float('inf')]
while start <= end and end < n:
# 1. ํ์ฌ ์์ด์ ํฉ < k
# end += 1
if sum < k and end < n-1: # end += 1 ํ ๊ฒ์ด๊ธฐ์ ๋ฒ์ ์ฒดํฌ
end += 1
sum += sequence[end]
# 2. ํ์ฌ ์์ด์ ํฉ > k
# start += 1
elif sum > k:
sum -= sequence[start]
start += 1
# 3. ํ์ฌ ์์ด์ ํฉ == k
elif sum == k:
# ๊ธฐ์กด์ ๋ฑ๋ก๋ ์์ด์ ๊ธธ์ด์ ๋น๊ต
# ๊ฐ์ผ๋ฉด ์ธ๋ฑ์ค ์์ ๊ฒ์ ๋ฑ๋กํด์ผ ํ๊ธฐ์ ๊ฐฑ์ ํ์ง ์๋๋ค
if ans[1] - ans[0] > end - start:
ans = [start, end]
# sum = k๋ฅผ ๋ง์กฑํ๋ ๋ ์งง์ ์์ด์ด ์์ ์ ์๊ธฐ์ start += 1
sum -= sequence[start]
start += 1
# 4. (1, 2, 3) ์กฐ๊ฑด์ ๋ง์กฑํ์ง ๋ชปํ๋๋ฐ end๋ฅผ ๊ฐฑ์ ํ์ง ๋ชปํด ๋ฌดํ๋ฃจํ์ธ ๊ฒฝ์ฐ ๋ฐฉ์ง
else:
if end == n-1:
break
return ans
๋ฐ์ํ
'algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] ๋ฆฌ์ฝ์ณ ๋ก๋ด (Python) (0) | 2024.07.11 |
---|---|
[Programmers] ๋ ์ ์ฌ์ด์ ์ ์ ์(Python, Java) (0) | 2024.07.04 |
[Programmers] ์๊ฒฉ ์์คํ (Python, Java) (0) | 2024.07.03 |
[Programmers] ๋ฑ๊ตฃ๊ธธ (Python, Java) (0) | 2024.07.02 |
[programmers] ์ ์ ์ผ๊ฐํ - Python, Java (0) | 2024.07.01 |