1. ๋ฌธ์ ์์ฝ
๊ฐ ๊ธฐ๋ฅ์ ๊ฐ๋ฐ ์ง๋์ ๊ฐ๋ฐ ์๋๊ฐ ์ฃผ์ด์ง ๋, ๋ค์ ์๋ ๊ธฐ๋ฅ์ ์์ ๊ธฐ๋ฅ์ด ๋ฐฐํฌ๋ ๋ ํจ๊ป ๋ฐฐํฌ๋์ด์ผ ํ๋ค.
๊ฐ ๋ฐฐํฌ๋ง๋ค ๋ช ๊ฐ์ ๊ธฐ๋ฅ์ด ๋ฐฐํฌ๋๋์ง๋ฅผ ๊ณ์ฐํ์ฌ ๋ฆฌ์คํธ๋ก ๋ฐํํ๋ ๋ฌธ์ ์ด๋ค.
2. ์ ๊ทผ ๋ฐฉ์ ๋น๊ต
๋จผ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋จ์ ์์
์ผ์(days)๋ฅผ ์ฌ๋ฆผ ์ฐ์ฐ์ผ๋ก ๊ณ์ฐํ ๋ค, ๋ฐฐํฌ ๊ทธ๋ฃน์ ๋ฌถ๋๋ค.
๐ค ์ ํ(Queue)๊ฐ ๋ ์ ํฉํ ๊น?
๊ธฐ๋ฅ์ ํญ์ **๋จผ์ ๋ค์ด์จ ์์๋๋ก** ๋ฐฐํฌ๋์ด์ผ ํ๋ค. ์ด๋ฌํ **FIFO(First-In-First-Out)** ํน์ฑ์ด ์ด ๋ฌธ์ ์ ๋ฐฐํฌ ๊ท์น๊ณผ ์ ํํ ์ผ์นํ๋ฏ๋ก, ์์์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๋ ํ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ผ๋ก ๋ ๋ช ํํ๋ค.
3. ๊ถ์ฅ ํ์ด: ํ(Queue) ์ฌ์ฉ
deque์ popleft()๋ฅผ ์ฌ์ฉํ์ฌ ์์๋๋ก ๋ฐฐํฌ๋์ ์นด์ดํธํ๋ค.
import math
from collections import deque
def solution(progresses, speeds):
# ๊ฐ ๊ธฐ๋ฅ์ด ์๋ฃ๋๊ธฐ๊น์ง ํ์ํ ์ผ์ ๊ณ์ฐ
days = [math.ceil((100 - p) / s) for p, s in zip(progresses, speeds)]
queue = deque(days)
answer = []
while queue:
current = queue.popleft() # ํ์ฌ ๋ฐฐํฌ์ ๊ธฐ์ค์ด ๋๋ ์ผ์
count = 1
# ๊ธฐ์ค ์ผ์๋ณด๋ค ์ผ์ฐ ๋๋๋ ๋ค์ ๊ธฐ๋ฅ๋ค์ ํจ๊ป ๋ฐฐํฌ
while queue and queue[0] <= current:
queue.popleft()
count += 1
answer.append(count)
return answer
4. ์ฐธ๊ณ ํ์ด: ์คํ(Stack) ์ฌ์ฉ
์คํ์ top(์ฌ๊ธฐ์๋ stack[0]) ์์๋ฅผ ์ ์งํ๋ฉฐ ๋น๊ตํ๋ ๋ฐฉ์์ด๋ค.
import math
def solution(progresses, speeds):
days = [math.ceil((100 - progress) / speed) for progress, speed in zip(progresses, speeds)]
stack = []
answer = []
for day in days:
if not stack or stack[0] >= day:
stack.append(day)
else:
answer.append(len(stack))
stack = [day] # ์ ๊ทธ๋ฃน ์์
answer.append(len(stack))
return answer
5. ํ(Queue) ํ์ด์ ์ฅ์
- ์ง๊ด์ฑ:
popleft()๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐํฌ ์์๋ฅผ ๋ช ํํ ํํํ๋ค. - ๋ช
ํ์ฑ: ๋ฐฐํฌ๋ ๊ทธ๋ฃน์ ์ค์๊ฐ์ผ๋ก ์นด์ดํธํ์ฌ
answer์ ์ถ๊ฐํ๋ ๋ก์ง์ด ๋ ์ฝ๊ธฐ ์ฝ๋ค. - ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ: ๋ถํ์ํ ๋ฆฌ์คํธ ์ด๊ธฐํ ์ฐ์ฐ์ ์ค์ด๊ณ ํ์ ๊ตฌ์กฐ๋ฅผ ๋ฐฑ๋ถ ํ์ฉํ๋ค.
'๐งฉ Algorithm > [Programmers] ์๊ณ ๋ฆฌ์ฆ ๊ณ ๋์ KIT' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Programmers/์๊ณ ๋ฆฌ์ฆ ๊ณ ๋์ KIT] ํ๋ก์ธ์ค (0) | 2026.04.07 |
|---|---|
| [Programmers/์๊ณ ๋ฆฌ์ฆ ๊ณ ๋์ KIT] ์ฌ๋ฐ๋ฅธ ๊ดํธ (0) | 2026.04.03 |
| [Programmers/์๊ณ ๋ฆฌ์ฆ ๊ณ ๋์ KIT] ๊ฐ์ ์ซ์๋ ์ซ์ด (0) | 2026.03.31 |
| [Programmers/์๊ณ ๋ฆฌ์ฆ ๊ณ ๋์ KIT] ๋ฒ ์คํธ์จ๋ฒ (0) | 2026.03.30 |
| [Programmers/์๊ณ ๋ฆฌ์ฆ ๊ณ ๋์ KIT] ์์ (0) | 2026.03.21 |