๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด/๊ตฌํ˜„

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ”„๋กœ์„ธ์Šค

by syLim___ 2023. 6. 6.
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/42587

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


์–ด๋–ค ์‹์œผ๋กœ ๋™์ž‘ํ•ด์•ผํ•˜๋Š”์ง€ ์ดํ•ด๋Š” ๋„ˆ๋ฌด ์‰ฝ๊ฒŒ ๋˜๋Š”๋ฐ, ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ ธ๋˜ ๋ฌธ์ œ์ด๋‹ค.

 

์šฐ์„ ์ˆœ์œ„์™€ ์ดˆ๊ธฐ ์ธ๋ฑ์Šค๋ฅผ ํ•จ๊ป˜ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ํŽธํ•˜๊ฒ ๋‹ค๊ณ  ํŒ๋‹จํ•˜๊ณ ,

ํ์— (์šฐ์„ ์ˆœ์œ„, ์ธ๋ฑ์Šค) ํŠœํ”Œ์„ ์ฐจ๋ก€๋กœ ๋„ฃ๊ณ  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค.

 

python

from collections import deque

def solution(priorities, location):
    q = deque()
    for i in range(len(priorities)):
        q.append((priorities[i], i))
    prior = deque(priorities)
    
    answer = 0
    while q:
        if q[0][0] == max(prior):
            num, idx = q.popleft()
            prior.remove(num)
            answer += 1
            if idx == location:
                return answer
        else:
            q.append(q.popleft())
            
    return answer

 

์•„๋ž˜ ์ฝ”๋“œ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ œ์ถœํ•œ ์ฝ”๋“œ ์ค‘ ํ•˜๋‚˜์ธ๋ฐ ๊ฐœ์ธ์ ์œผ๋กœ ์ €๋ ‡๊ฒŒ ํ‘ธ๋Š” ๊ฒƒ์ด ๊น”๋”ํ•ด๋ณด์˜€๋‹ค.

ํ์—์„œ ์‹ค์ œ๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊บผ๋‚ด๋Š” ์ž‘์—… ๋Œ€์‹  ์ปค์„œ ์ด๋™, ์šฐ์„ ์ˆœ์œ„ ๊ฐ’์„ 0์œผ๋กœ ๋ณ€๊ฒฝ์‹œ์ผœ์ค€ ํ’€์ด์ด๋‹ค.

def solution(priorities, location):
  n = len(priorities)
  answer = 0
  cursor = 0
  while True:
    print(priorities)
    if max(priorities) == priorities[cursor%n]:
      priorities[cursor%n] = 0
      answer += 1
      if cursor%n == location:
        break
    cursor += 1
  return answer
728x90