MapleStory Finger Point

[BOJ] #1966 - 프린터 큐

2021. 6. 12. 04:13Problem Solving/Online Judge

 

1966번: 프린터 큐

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

www.acmicpc.net

 

** 문제 유형

  • 큐, 구현, 그리디

 

** 풀이

  1. 데이터의 개수가 많지 않으므로 (N <= 100), 단순히 문제에서 요구하는 대로 구현
  2. 현재 리스트에서 가장 큰 수가 앞에 올 때까지 회전시킨 뒤에 추출

 

# 방법 1
tc_nums = int(input())


for i in range(tc_nums):
    n, search = list(map(int, input().split(' ')))
    priorities = list(map(int, input().split(' ')))
    queue = [(idx, p) for idx, p in enumerate(priorities)] # [(위치, 우선순위)]

    cnt = 0
    
    while True:
        if any(queue[0][1] < queue[i][1] for i in range(1, len(queue))): # 맨 앞의 원소보다 큰 원소가 있는 경우
            queue.append(queue.pop(0))
        else: # 맨 앞의 원소가 제일 큰 수일 경우
            cnt += 1

            if queue[0][0] == search:
                break

            queue.pop(0)
            
    print(cnt)

 

# 방법 2
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))

 

 

'Problem Solving > Online Judge' 카테고리의 다른 글

[BOJ] #10930 - SHA-256  (0) 2021.06.13
[BOJ] #5397 - 키로거  (0) 2021.06.13
[BOJ] #1874 - 스택 수열  (0) 2021.06.12
[BOJ] #2798 - 블랙잭  (0) 2021.06.12
[BOJ] #2920 - 음계  (0) 2021.06.11