Algorithm/Python

[스택/큐] 프린터

🥭맹2 2021. 5. 4. 01:11

1. 문제

programmers.co.kr/learn/courses/30/lessons/42587

 

코딩테스트 연습 - 프린터

일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린

programmers.co.kr

2. 접근 방법

1. 현재 n이 max인가 아닌가 확인

-- max를 확인하기 위해서 새로운 리스트 하나를 만듦

--- pop을 max리스트만 해주는 이유는 n을 확인하기 위해서!

1-1. max라면 max리스트에서 pop하고 isPrint를 뜻하는 visited[n] = True를 해준다. 그리고 answer += 1을 해준다.

1-1-1. 만약 max인데 location 값과 동일하다면 -> answer 반환하고 끝

1-2. max가 아니라면 (n+1)%len(priorities)하기(순회하는거)

3. 코드

python

def solution(priorities, location):
    answer = 0
    n = 0
    N = len(priorities)
    visited = [False] * N
    max_lst = priorities[:]
    while True:
        if priorities[n] == max(max_lst):
            answer += 1
            if n == location:
                return answer
            visited[n] = True
            max_lst.pop(max_lst.index(priorities[n]))
        n = (n+1)%N
    return answer

4. 마치며

이번에는 any를 쓴 코드가 있었다.

출처 : https://wikidocs.net/32#any

def solution(priorities, location):
    queue =  [(i,p) for i,p in enumerate(priorities)]
    answer = 0
    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

씐기행 증말루 ,,

'Algorithm > Python' 카테고리의 다른 글

[백준 20127] Y-수열  (0) 2021.05.05
[백준 1593] 문자 해독  (0) 2021.05.05
[스택/큐] 기능개발  (0) 2021.05.03
[백준 2309] 일곱 난쟁이  (0) 2021.05.03
[백준 6588] 골드바흐의 추측  (0) 2021.05.03