๐กsolutions )
โ ์คํ์์ pop(0) ํ๋ ๊ฒ๋ณด๋ค(์๊ฐ๋ณต์ก๋ O(N)) deque ์๋ฃํ์ผ๋ก popleft()ํ๋ ๊ฒ ํจ์ฌ ํจ์จ์ ์ด๋ค(์๊ฐ๋ณต์ก๋O(1))
โ ๋ฐธ๋ฅ ๊ฐ๊ณผ ์ธ๋ฑ์ค ๊ฐ์ ํจ๊ป ์ฌ์ฉํ๋ฏ๋ก enumerate ํจ์ ์ฌ์ฉ
โ item ๋ณด๋ค max ์ด ํฌ๋ค๋ฉด ๋ค์ ๋ฐฐ์ด์ ๋ด์์ฃผ๊ณ , ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ answer+1
โ item์ ์ธ๋ฑ์ค๊ฐ location์ด๋ ๋์ผํ๋ค๋ฉด ๋ฐ๋ณต๋ฌธ ์ข ๋ฃ -> answer ๋ฐํ
โ ๋ค๋ฅธ ์ฌ๋์ ํ์ด๋ฅผ ํ์ธํด ๋ณด๋ ํ์ด์ฌ ๋ด์ฅํจ์ ์ค any๋ฅผ ์ฌ์ฉํด์ while๋ฌธ ์์ ์กฐ๊ฑด๋ฌธ์ ์ง ์ฝ๋๋ ์์๋ค.
if any( item[0] < a[0] for a in array ):
array.append(item)
๐ซcode )
from collections import deque
def solution(priorities, location):
answer = 0
array = deque([(v, i) for i, v in enumerate(priorities)])
while len(array):
item = array.popleft()
if array and max(array)[0] > item[0]:
array.append(item)
else:
answer += 1
if item[1] == location:
break
return answer
๐ description )
๋ฌธ์ ์ถ์ฒ : https://programmers.co.kr/learn/courses/30/lessons/42587?language=python3
๋ฌธ์ ์ค๋ช์ผ๋ฐ์ ์ธ ํ๋ฆฐํฐ๋ ์ธ์ ์์ฒญ์ด ๋ค์ด์จ ์์๋๋ก ์ธ์ํฉ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ค์ํ ๋ฌธ์๊ฐ ๋์ค์ ์ธ์๋ ์ ์์ต๋๋ค. ์ด๋ฐ ๋ฌธ์ ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ์ค์๋๊ฐ ๋์ ๋ฌธ์๋ฅผ ๋จผ์ ์ธ์ํ๋ ํ๋ฆฐํฐ๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค. ์ด ์๋กญ๊ฒ ๊ฐ๋ฐํ ํ๋ฆฐํฐ๋ ์๋์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ธ์ ์์ ์ ์ํํฉ๋๋ค.
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๋ก ํํํฉ๋๋ค.
์ ์ถ๋ ฅ ์
priorities location return
[2, 1, 3, 2] 2 1 [1, 1, 9, 1, 1, 1] 0 5 ์ ์ถ๋ ฅ ์ ์ค๋ช
์์ #1
๋ฌธ์ ์ ๋์จ ์์ ๊ฐ์ต๋๋ค.
์์ #2
6๊ฐ์ ๋ฌธ์(A, B, C, D, E, F)๊ฐ ์ธ์ ๋๊ธฐ๋ชฉ๋ก์ ์๊ณ ์ค์๋๊ฐ 1 1 9 1 1 1 ์ด๋ฏ๋ก C D E F A B ์์ผ๋ก ์ธ์ํฉ๋๋ค.