Tesseractjh
한 걸음씩
Tesseractjh
전체 방문자
오늘
어제
  • 전체 (293)
    • IT (30)
      • JavaScript (7)
      • TypeScript (5)
      • React (5)
      • Next.js (3)
      • MongoDB (2)
      • Webpack (2)
      • HTML & CSS (1)
      • Git (0)
      • AWS (1)
      • 기타 (4)
    • 연습장 (259)
      • 백준(BOJ) 문제풀이 (185)
      • 프로그래머스 문제풀이 (61)
      • LeetCode 문제풀이 (2)
      • HackerRank 문제풀이 (7)
      • 낙서장 (3)
      • 기타 (1)
    • 프로젝트 (3)
      • 지뢰피하기 (1)
      • 키릴-라틴 문자 변환기 (1)
      • Flex & Grid (1)
    • 멋쟁이사자처럼 프론트엔드 스쿨 1기 (1)
      • 일기 & 회고록 (1)

인기 글

티스토리

hELLO · Designed By 정상우.
Tesseractjh

한 걸음씩

연습장/백준(BOJ) 문제풀이

[백준 1966] 프린터 큐 with Python

2021. 5. 2. 21:38

문제 링크

www.acmicpc.net/problem/1966

 

1966번: 프린터 큐

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

www.acmicpc.net

풀이

import sys

class Document:
    def __init__(self, importance):
        self.importance = int(importance)
        self.is_target = False

t = int(sys.stdin.readline())
answer = []

for _ in range(t):
    n, m = map(int, sys.stdin.readline().split())
    queue = list(map(Document, sys.stdin.readline().split()))
    queue[m].is_target = True

    count = 0
    while True:
        is_highest = True
        for doc in queue:
            if queue[0].importance < doc.importance:
                queue = queue[1:] + [queue[0]]
                is_highest = False
                break
        if is_highest:
            printed = queue[0]
            queue = queue[1:]
            count += 1
            if printed.is_target:
                answer.append(str(count))
                break

print("\n".join(answer))

먼저 중요도와 몇 번째로 인쇄되었는지 알고자 하는 대상인지 여부를 프로퍼티로 갖는 Document 객체를 정의하고, Document 객체들로 queue를 채운다. 그리고 인쇄 순서를 알고자 하는 단 하나의 문서의 is_target 프로퍼티를 True로 변경한다.

 

queue의 첫 번째 문서보다 중요도가 높은 문서가 뒤에 있다면, 첫 번째 문서를 맨 뒤로 보내고, 첫 번째 문서가 가장 중요도가 높은 문서라면 queue에서 제거한다. 이 때, 제거한 문서의 is_target이 True라면, count를 저장하고 반복을 종료한다.

저작자표시 비영리 (새창열림)

'연습장 > 백준(BOJ) 문제풀이' 카테고리의 다른 글

[백준 3085] 사탕 게임 with Node.js  (0) 2021.05.04
[백준 1049] 기타줄 with Node.js  (2) 2021.05.02
[백준 13305] 주유소 with Node.js  (1) 2021.05.01
[백준 15650] N과 M (2) with Python  (0) 2021.04.30
[백준 11652] 카드 with Node.js  (0) 2021.04.29
    '연습장/백준(BOJ) 문제풀이' 카테고리의 다른 글
    • [백준 3085] 사탕 게임 with Node.js
    • [백준 1049] 기타줄 with Node.js
    • [백준 13305] 주유소 with Node.js
    • [백준 15650] N과 M (2) with Python
    Tesseractjh
    Tesseractjh
    바닐라 자바스크립트를 좋아하는 개발자입니다

    티스토리툴바