용꿀
꼬마개발자허니
용꿀
전체 방문자
오늘
어제
  • 분류 전체보기 (248)
    • 개발 (75)
      • 스프링 입문 (7)
      • 스프링 기본 (9)
      • ToDo List using JPA (2)
      • 스프링 개념 (9)
      • 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (8)
      • 스프링 MVC (3)
      • CS (19)
      • 개발 팁 (8)
      • 스프링 MSA (5)
      • 곰터뷰🐻 (5)
    • 알고리즘 (169)
      • 알고리즘 문제 풀이 (165)
    • 잡동사니 (1)
      • 노래 가사 (1)
hELLO · Designed By 정상우.
용꿀

꼬마개발자허니

(Python) 백준 1966번 - 프린터 큐
알고리즘/알고리즘 문제 풀이

(Python) 백준 1966번 - 프린터 큐

2023. 1. 13. 13:53

문제 링크 : https://www.acmicpc.net/problem/1966

 

1966번: 프린터 큐

여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에

www.acmicpc.net

풀이

큐와 이차 배열을 사용하여 문제 풀이를 진행했다.

중요도와 문서 번호를 동시에 큐에 담아서 진행하는 것이 풀이의 핵심이라고 볼 수 있겠다.

이차 배열이 아니라 딕셔너리를 사용하여서 풀이하는 것도 가능할거 같다.

import sys
from collections import deque

for _ in range(int(sys.stdin.readline())):
    n, m = map(int, sys.stdin.readline().split())
    que = deque()
    priority = sys.stdin.readline().strip().split() # 우선순위 저장
    for i in range(n):
        que.append([i, int(priority[i])]) # 문서 순서와 중요도를 한번에 저장
    if n == 1:
        print(1)
    else:
        cnt = 0 # 몇 번째로 출력되었는지 카운트
        while True: # 몇 번째로 인쇄되었는지 궁금한 문서가 인쇄될 때까지 반복
            clumn = [i[1] for i in que] # 중요도 열만 뽑아내기
            max_num = max(clumn) # queue에 존재하는 문서들의 중요도 중 최대값
            if que[0][1] == max_num: # 맨 앞의 문서 중요도가 queue에 존재하는 문서들 중 가장 크다면 출력
                cnt += 1 # 출력 카운트 증가
                if que[0][0] == m: # 이 문서가 출력 순서를 알고 싶었던 문서라면
                    break # while문 break
                que.popleft() # 출력 완료
            else: # 더 중요도가 큰 문서가 있다면
                que.append(que[0]) # queue의 맨 뒤로 
                que.popleft() # 이동
        print(cnt)

 

'알고리즘 > 알고리즘 문제 풀이' 카테고리의 다른 글

(C++) 백준 1406번 - 에디터  (0) 2023.03.16
(C++) 백준 5397번 - 키로거  (0) 2023.03.16
(Python) 백준 1929번 - 소수 구하기  (0) 2023.01.11
(Python) 백준 1874번 - 스택 수열  (0) 2023.01.10
(Python) 백준 10866번 - 덱  (0) 2023.01.10
    '알고리즘/알고리즘 문제 풀이' 카테고리의 다른 글
    • (C++) 백준 1406번 - 에디터
    • (C++) 백준 5397번 - 키로거
    • (Python) 백준 1929번 - 소수 구하기
    • (Python) 백준 1874번 - 스택 수열
    용꿀
    용꿀

    티스토리툴바