Post

ํ”„๋กœ์„ธ์Šค lv2

๐ŸŒˆ๋ฌธ์ œ ๋งํฌ

Desktop View

Desktop View

Desktop View

ํ•ต์‹ฌ

ํ์—์„œ ๋ฐฉ๊ธˆ ๊บผ๋‚ธ ํ”„๋กœ์„ธ์Šค(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() ์•ˆ์จ๋„ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ

This post is licensed under CC BY 4.0 by the author.
3D GIF