1966: 프린터 큐 - Python

beaver.zip·2일 전
0

[알고리즘] 백준

목록 보기
45/45

문제

https://www.acmicpc.net/problem/1966


풀이 1

from collections import deque

for _ in range(int(input())):
    N, M = map(int, input().split())
    prior = deque(list(map(int, input().split()))) # 중요도
    index = deque(range(N)) # 각 문서의 인덱스
    
    cnt = 1
    while prior:
        if prior[0] == max(prior):
            if index[0] == M:
                print(cnt)
                break
            else:
                cnt += 1
                prior.popleft()
                index.popleft()
        else:
            prior.rotate(-1)
            index.rotate(-1)
  • 각 문서의 중요도를 저장하는 prior와 각 문서의 인덱스(0 ~ N-1)를 저장하는 indexdeque으로 구현했다.
  • M에 해당하는 문서가 출력될 때까지 prior, index를 회전한다.

풀이 2 (leego님 풀이)

t = int(input())

for _ in range(t):
    n, m = map(int, input().split())
    data = list(map(int, input().split()))
    
    result = 1
    while data:
        if data[0] < max(data):
            data.append(data.pop(0))

        else:
            if m == 0: break

            data.pop(0)
            result += 1

        m = m - 1 if m > 0 else len(data) - 1

    print(result)

m을 사용하는 방법이 천재적인 것 같다.
이런 생각을 대체 어떻게 할까? 너무 부럽다.

profile
NLP 일짱이 되겠다.

0개의 댓글