1) ๋ฌธ์ ์ค๋ช
- ํ๋ก๊ทธ๋๋จธ์ค ํ์์๋ ๊ธฐ๋ฅ ๊ฐ์ ์์ ์ ์ํ ์ค์ ๋๋ค.
- ๊ฐ ๊ธฐ๋ฅ์ ์ง๋๊ฐ 100%์ผ ๋ ์๋น์ค์ ๋ฐ์ํ ์ ์์ต๋๋ค.
- ๋, ๊ฐ ๊ธฐ๋ฅ์ ๊ฐ๋ฐ์๋๋ ๋ชจ๋ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋ค์ ์๋ ๊ธฐ๋ฅ์ด ์์ ์๋ ๊ธฐ๋ฅ๋ณด๋ค ๋จผ์ ๊ฐ๋ฐ๋ ์ ์๊ณ , ์ด๋ ๋ค์ ์๋ ๊ธฐ๋ฅ์ ์์ ์๋ ๊ธฐ๋ฅ์ด ๋ฐฐํฌ๋ ๋ ํจ๊ป ๋ฐฐํฌ๋ฉ๋๋ค.
- ๋จผ์ ๋ฐฐํฌ๋์ด์ผ ํ๋ ์์๋๋ก ์์ ์ ์ง๋๊ฐ ์ ํ ์ ์ ๋ฐฐ์ด progresses์ ๊ฐ ์์ ์ ๊ฐ๋ฐ ์๋๊ฐ ์ ํ ์ ์ ๋ฐฐ์ด speeds๊ฐ ์ฃผ์ด์ง ๋ ๊ฐ ๋ฐฐํฌ๋ง๋ค ๋ช ๊ฐ์ ๊ธฐ๋ฅ์ด ๋ฐฐํฌ๋๋์ง๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
2) ์ ํ ์ฌํญ
- ์์ ์ ๊ฐ์(progresses, speeds๋ฐฐ์ด์ ๊ธธ์ด)๋ 100๊ฐ ์ดํ์ ๋๋ค.
- ์์ ์ง๋๋ 100 ๋ฏธ๋ง์ ์์ฐ์์ ๋๋ค.
- ์์ ์๋๋ 100 ์ดํ์ ์์ฐ์์ ๋๋ค.
- ๋ฐฐํฌ๋ ํ๋ฃจ์ ํ ๋ฒ๋ง ํ ์ ์์ผ๋ฉฐ, ํ๋ฃจ์ ๋์ ์ด๋ฃจ์ด์ง๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด ์ง๋์จ์ด 95%์ธ ์์ ์ ๊ฐ๋ฐ ์๋๊ฐ ํ๋ฃจ์ 4%๋ผ๋ฉด ๋ฐฐํฌ๋ 2์ผ ๋ค์ ์ด๋ฃจ์ด์ง๋๋ค.
3) ์ ์ถ๋ ฅ ์์
progresses speeds return
[93, 30, 55] [1, 30, 5] [2, 1]
[95, 90, 99, 99, 80, 99] [1, 1, 1, 1, 1, 1] [1, 3, 2]
4) ์ ์ถ๋ ฅ ์์ ์ค๋ช
์
์ถ๋ ฅ ์ #1
์ฒซ ๋ฒ์งธ ๊ธฐ๋ฅ์ 93% ์๋ฃ๋์ด ์๊ณ ํ๋ฃจ์ 1%์ฉ ์์
์ด ๊ฐ๋ฅํ๋ฏ๋ก 7์ผ๊ฐ ์์
ํ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๋ ๋ฒ์งธ ๊ธฐ๋ฅ์ 30%๊ฐ ์๋ฃ๋์ด ์๊ณ ํ๋ฃจ์ 30%์ฉ ์์
์ด ๊ฐ๋ฅํ๋ฏ๋ก 3์ผ๊ฐ ์์
ํ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ํ์ง๋ง ์ด์ ์ฒซ ๋ฒ์งธ ๊ธฐ๋ฅ์ด ์์ง ์์ฑ๋ ์ํ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ์ฒซ ๋ฒ์งธ ๊ธฐ๋ฅ์ด ๋ฐฐํฌ๋๋ 7์ผ์งธ ๋ฐฐํฌ๋ฉ๋๋ค.
์ธ ๋ฒ์งธ ๊ธฐ๋ฅ์ 55%๊ฐ ์๋ฃ๋์ด ์๊ณ ํ๋ฃจ์ 5%์ฉ ์์
์ด ๊ฐ๋ฅํ๋ฏ๋ก 9์ผ๊ฐ ์์
ํ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๋ฐ๋ผ์ 7์ผ์งธ์ 2๊ฐ์ ๊ธฐ๋ฅ, 9์ผ์งธ์ 1๊ฐ์ ๊ธฐ๋ฅ์ด ๋ฐฐํฌ๋ฉ๋๋ค.
์
์ถ๋ ฅ ์ #2
๋ชจ๋ ๊ธฐ๋ฅ์ด ํ๋ฃจ์ 1%์ฉ ์์
์ด ๊ฐ๋ฅํ๋ฏ๋ก, ์์
์ด ๋๋๊ธฐ๊น์ง ๋จ์ ์ผ์๋ ๊ฐ๊ฐ 5์ผ, 10์ผ, 1์ผ, 1์ผ, 20์ผ, 1์ผ์
๋๋ค. ์ด๋ค ๊ธฐ๋ฅ์ด ๋จผ์ ์์ฑ๋์๋๋ผ๋ ์์ ์๋ ๋ชจ๋ ๊ธฐ๋ฅ์ด ์์ฑ๋์ง ์์ผ๋ฉด ๋ฐฐํฌ๊ฐ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๋ฐ๋ผ์ 5์ผ์งธ์ 1๊ฐ์ ๊ธฐ๋ฅ, 10์ผ์งธ์ 3๊ฐ์ ๊ธฐ๋ฅ, 20์ผ์งธ์ 2๊ฐ์ ๊ธฐ๋ฅ์ด ๋ฐฐํฌ๋ฉ๋๋ค.
5) ํ์ด
from collections import deque
def solution(progresses, speeds):
# day(์ผ์), deployCount(๋ฐฐํฌ ๊ฐ์) ์ ์ธ
day = 0
deployCount = 0
answer = []
# Queue ์์ฑ
progressQueue = deque()
# Queue ์ด๊ธฐํ (progress, speed)
for progress, speed in zip(progresses, speeds):
progressQueue.append((progress, speed))
while progressQueue:
# day ์ฆ๊ฐ
day += 1
# Queue๊ฐ ๋น์ด์์ง ์๊ณ ์งํ๋๊ฐ 100์ด ๋๋ ๊ฒฝ์ฐ
while progressQueue and progressQueue[0][0] + (day * progressQueue[0][1]) >= 100:
deployCount += 1
progressQueue.popleft()
# ํด๋น ์ผ์ ๋ฐฐํฌ๋ ๊ฐ์๊ฐ 0์ด ์๋ ๊ฒฝ์ฐ
if deployCount != 0:
answer.append(deployCount)
deployCount = 0
return answer
[Reference]
๋ฐ์ํ
'๐ฏ Coding Test > ์๊ณ ๋ฆฌ์ฆ ํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค (Lv 2) - ์์ด ๋๋ง์๊ธฐ (1) | 2023.08.17 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค (Lv 2) - ์นดํซ (1) | 2023.08.17 |
ํ๋ก๊ทธ๋๋จธ์ค (Lv 2) - ํ๋ก์ธ์ค (1) | 2023.08.16 |
ํ๋ก๊ทธ๋๋จธ์ค (Lv 0) - ์น์์ด (1) (1) | 2023.08.16 |
ํ๋ก๊ทธ๋๋จธ์ค (Lv 0) - ์ ์๋ฅผ ๋์ ํ์ผ๋ก ๋ฐฐ์นํ๊ธฐ (2) | 2023.08.16 |