๋ฌธ์
์ผ๋ฐ์ ์ธ ํ๋ฆฐํฐ๋ ์ธ์ ์์ฒญ์ด ๋ค์ด์จ ์์๋๋ก ์ธ์ํฉ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ค์ํ ๋ฌธ์๊ฐ ๋์ค์ ์ธ์๋ ์ ์์ต๋๋ค. ์ด๋ฐ ๋ฌธ์ ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ์ค์๋๊ฐ ๋์ ๋ฌธ์๋ฅผ ๋จผ์ ์ธ์ํ๋ ํ๋ฆฐํฐ๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค. ์ด ์๋กญ๊ฒ ๊ฐ๋ฐํ ํ๋ฆฐํฐ๋ ์๋์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ธ์ ์์ ์ ์ํํฉ๋๋ค.
1. ์ธ์ ๋๊ธฐ๋ชฉ๋ก์ ๊ฐ์ฅ ์์ ์๋ ๋ฌธ์(J)๋ฅผ ๋๊ธฐ๋ชฉ๋ก์์ ๊บผ๋
๋๋ค.
2. ๋๋จธ์ง ์ธ์ ๋๊ธฐ๋ชฉ๋ก์์ J๋ณด๋ค ์ค์๋๊ฐ ๋์ ๋ฌธ์๊ฐ ํ ๊ฐ๋ผ๋ ์กด์ฌํ๋ฉด J๋ฅผ ๋๊ธฐ๋ชฉ๋ก์ ๊ฐ์ฅ ๋ง์ง๋ง์ ๋ฃ์ต๋๋ค.
3. ๊ทธ๋ ์ง ์์ผ๋ฉด J๋ฅผ ์ธ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, 4๊ฐ์ ๋ฌธ์(A, B, C, D)๊ฐ ์์๋๋ก ์ธ์ ๋๊ธฐ๋ชฉ๋ก์ ์๊ณ ์ค์๋๊ฐ 2 1 3 2 ๋ผ๋ฉด C D A B ์์ผ๋ก ์ธ์ํ๊ฒ ๋ฉ๋๋ค.
๋ด๊ฐ ์ธ์๋ฅผ ์์ฒญํ ๋ฌธ์๊ฐ ๋ช ๋ฒ์งธ๋ก ์ธ์๋๋์ง ์๊ณ ์ถ์ต๋๋ค. ์์ ์์์ C๋ 1๋ฒ์งธ๋ก, A๋ 3๋ฒ์งธ๋ก ์ธ์๋ฉ๋๋ค.
ํ์ฌ ๋๊ธฐ๋ชฉ๋ก์ ์๋ ๋ฌธ์์ ์ค์๋๊ฐ ์์๋๋ก ๋ด๊ธด ๋ฐฐ์ด priorities์ ๋ด๊ฐ ์ธ์๋ฅผ ์์ฒญํ ๋ฌธ์๊ฐ ํ์ฌ ๋๊ธฐ๋ชฉ๋ก์ ์ด๋ค ์์น์ ์๋์ง๋ฅผ ์๋ ค์ฃผ๋ location์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ด๊ฐ ์ธ์๋ฅผ ์์ฒญํ ๋ฌธ์๊ฐ ๋ช ๋ฒ์งธ๋ก ์ธ์๋๋์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- ํ์ฌ ๋๊ธฐ๋ชฉ๋ก์๋ 1๊ฐ ์ด์ 100๊ฐ ์ดํ์ ๋ฌธ์๊ฐ ์์ต๋๋ค.
- ์ธ์ ์์ ์ ์ค์๋๋ 1~9๋ก ํํํ๋ฉฐ ์ซ์๊ฐ ํด์๋ก ์ค์ํ๋ค๋ ๋ป์ ๋๋ค.
- location์ 0 ์ด์ (ํ์ฌ ๋๊ธฐ๋ชฉ๋ก์ ์๋ ์์ ์ - 1) ์ดํ์ ๊ฐ์ ๊ฐ์ง๋ฉฐ ๋๊ธฐ๋ชฉ๋ก์ ๊ฐ์ฅ ์์ ์์ผ๋ฉด 0, ๋ ๋ฒ์งธ์ ์์ผ๋ฉด 1๋ก ํํํฉ๋๋ค.
ํด์ค ์ฝ๋
def solution(priorities, location):
# Queue ๋ฅผ ์์ฑํ๋ค.
printer = [(i,p) for i,p in enumerate(priorities)]
turn = 0
print(printer)
while printer:
job = printer.pop(0)
# ๋๋ณด๋ค ์ค์ํ job์ด ์์ผ๋ฉด ์๊ธฐ ์์ ์ ๊ฐ์ฅ ๋ค์ append ํ๋ค.
if any(job[1] < other_job[1] for other_job in printer):
printer.append(job)
# ๋ด๊ฐ ๊ฐ์ฅ ์ค์ํ job์ด๋ฉด ์ํํ๊ณ location๊ณผ ๋น๊ตํ๋ค.
else:
turn += 1
if job[0] == location:
print(job[0])
break
return turn
๋ถ์ > ์ด ์ฝ๋์ ์ ๊ฐ ์๋ฆฌ๋ ๊ฐ๋จํ๋ค. ํ๋ฅผ ์์ฑํ ๋ค์ ๊ฐ์ฅ ์์ ์์๋ฅผ pop ํ๋ฉด์ ๊ทธ ์์๋ณด๋ค ์ค์ํ ์์๊ฐ ๋ค์ ์์ผ๋ฉด ์๊ธฐ ์์ ์ ๋ฐฐ์ด ๊ฐ์ฅ ๋ค์ ์ถ๊ฐํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด turn์ ์ฆ๊ฐ์๋ฉด์ index๋ฅผ ์ธ๋ค๊ฐ job[0] ์ด location๊ณผ ์ผ์นํ๋ ์๊ฐ while ๋ฌธ์ ์ข ๋ฃํ๊ณ turn ๊ฐ์ ๋ฐํํ๋ ๊ฒ์ด๋ค. ์ด ์ฝ๋์์ ์๋ก ์๊ฒ๋ ๊ฐ๋ ์ด ํ์ธ๋ฐ, ํ๋ ํํ ํํ๋ก ๋ฐฐ์ด์ index์ value๊ฐ์ ํ๊บผ๋ฒ์ ๋ฌถ์ด์ค ์ ์๊ณ ๊ทธ ๋ ์ฌ์ฉํ๋ ํจ์ enumerate ๋ผ๋ ๊ฒ์ ์๊ฒ ๋์๋ค. ๊ทธ๋ฆฌ๊ณ any๋ผ๋ ํจ์ ๋ํ ์๋กญ๊ฒ ์๊ฒ ๋์๋๋ฐ, any๋ ํ๋๋ผ๋ true ์ธ๊ฒ ์์ผ๋ฉด true๋ฅผ ๋ฐํํ๋ ํจ์์ด๋ค. ๊ทธ๋ฌ๊ธฐ์ ์ฌ๊ธฐ์๋ ๊ธฐ์ค์ด ๋๋ ์ฒซ ๋ฒ์งธ ์์์ value ๊ฐ๋ณด๋ค ํฐ ์๊ฐ ๋ฐฐ์ด์ ๋จ์์์ผ๋ฉด์ด๋ผ๋ ์กฐ๊ฑด์ ๋ํ๋ผ ๋ any๋ฅผ ์ฌ์ฉํ์๋ค.
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ (0) | 2022.04.27 |
---|---|
[Programmers] ๋ฌธ์์ด ์์ถ (0) | 2022.04.23 |
[Programmers] ํผ๋ณด๋์น ์ (0) | 2022.04.14 |
[Programmers] ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ (0) | 2022.04.13 |
[Programmers] ์์ฃผํ์ง ๋ชปํ ์ ์ (0) | 2022.04.13 |