본문 바로가기
Python

[백준] 1966번 : 프린터 큐

by Leunco 2021. 12. 10.

유형 : 스택, 그리디

 

[예시]

3
1 0
5
4 2
1 2 3 4
6 0
1 1 9 1 1 1

[출력]

1
2
5

예시를 통해 문제를 이해해보자.

 

테스트 케이스 개수가 3개인데 여기서 2번째, 3번째만 살펴보겠다.
1) 2번째 케이스


2) 3번째 케이스


풀이

test_case = int(input())

for _ in range(test_case):
    n, m = list(map(int, input().split(' ')))
    queue = list(map(int, input().split(' ')))
    queue = [(i,idx) for idx, i in enumerate(queue)] # (중요도, 인덱스)
    
    count = 0
    while True:
    	if queue[0][0] == max(queue, key=lambda x:x[0])[0]: # 큐에서 첫번째 원소의 중요도가 가장 큰 중요도라면
        	count += 1
            if queue[0][1] == m: # 구해야하는 문서가 맞다면
            	print(count)
                break
            else:
            	queue.pop(0) # 구해야하는 문서가 아니면 출력만 하고 다음으로 넘어감
   		else:
        	queue.append(queue.pop(0)) # 중요도가 가장 크지 않다면 큐의 뒤로 보내줌

 

처음에 문제를 이해하지 못해서 바로 못 풀었다...
이해하고 나니 문제에서 요구하는 대로 구현하면 쉽게 풀리는 듯하다.. 못해서 문제지..

** max 함수의 key 사용 (링크)

 

[python] max함수의 key변수 사용.

max에서 key를 사용하는 주된 목적은 index(key)와 value 짝의 튜플형태로 이루어진 리스트에서 key와 value 중에 어떤것을 기준으로 max값을 구할지 선택하기위한 목적으로 많이 활용된다. 🔥 max의 key :

velog.io

 

 

- 백준 링크 https://www.acmicpc.net/problem/1966

- 출처 : 패스트캠퍼스 - 알고리즘 / 기술면접 완전 정복 올인원 패키지 Online

반응형

'Python' 카테고리의 다른 글

[자료구조] 해쉬 테이블  (0) 2021.12.13
[백준] 5397번 : 키로거  (0) 2021.12.11
[백준] 11399번 : ATM  (0) 2021.12.09
[알고리즘] 탐욕(그리디) 알고리즘  (0) 2021.12.09
[자료구조] 큐(Queue) 정리  (0) 2021.12.09

댓글