ํ๋ก์ธ์ค lv2
๐๋ฌธ์ ๋งํฌ
ํต์ฌ
ํ์์ ๋ฐฉ๊ธ ๊บผ๋ธ ํ๋ก์ธ์ค(cur)์ ์ค์๋๋ณด๋ค ๋์ ์ค์๋๋ฅผ ๊ฐ์ง ํ๋ก์ธ์ค๊ฐ ํ์ ๋จ์์๋์ง ํ์ธํ๊ณ , ๊ทธ์ ๋ง์ถฐ์ ์ฒ๋ฆฌ
1
2
3
4
5
6
7
8
9
10
11
def solution(priorities, location):
answer = 0
queue = [(i,p) for i,p in enumerate(priorities)]
while True:
cur = queue.pop(0)
if any(cur[1] < q[1] for q in queue):
queue.append(cur)
else:
answer += 1
if cur[0] == location:
return answer
ํ์ด
def solution(priorities, location): answer = 0 queue = [(i,p) for i,p in enumerate(priorities)]
- answer์ 0์ผ๋ก ์ด๊ธฐํ
- enumerate ํจ์๋ก priorities ๋ฆฌ์คํธ[]์ ๊ฐ ์์์ ๋ํด ์ธ๋ฑ์ค, ๊ฐ์ ํํ์ ์์ฑ
- ๊ทธ ํ ๋ฆฌ์คํธ๋ก ๋ง๋ค์ด queue์ ์ ์ฅ
while True: cur = queue.pop(0) if any(cur[1] < q[1] for q in queue): queue.append(cur)
- ๋ฃจํ๋ด์ ์กฐ๊ฑด์ด True์ธ ๋์ ๊ณ์ ์คํ
- queue์์ ๋งจ ์์ ์๋ ์ธ๋ฑ์ค0์ ์์๋ฅผ cur(๋ฐฉ๊ธ ๊บผ๋ธ ํ๋ก์ธ์ค)๋ก ์ง์
- cur(//)์ ์ฐ์ ์์๋ณด๋ค ํ์ ๋จ์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ ์ฐ์ ์์๊ฐ ๋ ๋์๊ฐ?
- ๋ง์ฝ ๊ทธ๋ ๋ค๋ฉด, cur(//)์ ํ์ ๋งจ๋ค๋ก ์ด๋
else: answer += 1 if cur[0] == location: return answer
- cur(๋ฐฉ๊ธ ๊บผ๋ธ ํ๋ก์ธ์ค)๋ณด๋ค q์์ ์ค์๋๊ฐ ๋ ๋์ ํ๋ก์ธ์ค๊ฐ ์๋ค๋ฉด?
- cur(//)์ ๋์ ์ผ๋ก ์ถ๊ฐํ๋ค.
- ๋ง์ฝ cur(//)์ ์ธ๋ฑ์ค๊ฐ location์ด๋ ๊ฐ์ผ๋ฉด ํ์ฌ๊น์ง ๋ช๋ฒ answer์ด ์๋๋์๋ ๋ฐํ
์๊ฒ๋ ๊ฒ (5๊ฐ)
1. ์ฐจ์ด
queue = [(i,p) for i,p in enumerate(priorities)]
(i, p) ์๊ดํธ๊ฐ ์์ผ๋ฉด (i, p)๋ผ๋ ํํ์ ๊ฐ๋ ๋ฆฌ์คํธ ์์ฑ
queue = [i,p for i,p in enumerate(priorities)]
์ด์ฐจํผ ์ค๋ฅ๋ธ
ํํ์ด ์๋ ๋๊ฐ์ ๊ฐ i, p๋ฅผ ๊ฐ์ง ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๋ ค๊ณ ์๋
2. queue ์ ๊ธฐ
queue = [for๋ฌธ์ ์ ๋๋ผ๋ ๊ดํธ๋ถํฐ ์์ํ๊ณ ์์ฑ]
ex) queue = [(i,p) for i,p in enumerate(priorities)]
3. queue ์์ฑ ํํ
1
2
def solution(priorities, location):
queue = [(i,p) for i,p in enumerate(priorities)]
๋ง์ฝ ์ด ์ฝ๋์ priorities = [2, 1, 3, 2]
์ด๊ฑธ ์ถ๊ฐํ๋ฉด,
โ> queue = [(0,2), (1,1), (2,3), (3,2)]
4. cur[0] cur[1] q[0] q[1]
๊ฐ๊ฐ ๋ฌด์จ ๋ป์ธ๊ฐ? โ> ์์ ์ฝ๋ ํ์ค ์ฐธ๊ณ
queue = [(i,p) for i,p in enumerate(priorities)]
- ์ฐ์ ์์๋ฅผ ๋น๊ต: cur[1] & q[1]
- ๋ง์ฝ ์ธ๋ฑ์ค๋ฅผ ๋น๊ต: cur[0] ๊ทธ๋ฆฌ๊ณ q[0]
- ๋ฌธ์ ๋ฅผ ๋ณด๋ ์ฐ์ ์์ ๋น๊ตํด์ผ ํ ๋ฏ
5. any() all()
๋ฌด์จ ์ฐจ์ด์ธ๊ฐ
any()
ํ๋๋ผ๋ True์ธ๊ฒ ์์ผ๋ฉด, True ๋ฐํ
all()
๋ชจ๋ True์ฌ์ผ True ๋ฐํ
1
if any(cur[1] < q[1] for q in queue): queue.append(cur)
์๋ฏธ โ>
๋ฐฉ๊ธ ๊บผ๋ธ ํ๋ก์ธ์ค์ ์ค์๋๋ณด๋ค ํ์ ๋จ์์๋ ํ๋ก์ธ์ค์ ์ค์์ฑ์ด ๋ ํฌ๋ฉด, ๋ฐฉ๊ธ ๊บผ๋ธ ํ๋ก์ธ์ค๋ฅผ ๋งจ ๋ค์ ์ถ๊ฐํ๋ค.
์ฆ max() ์์จ๋ ํด๊ฒฐ ๊ฐ๋ฅ