728x90
반응형

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

 

1966번: 프린터 큐

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

www.acmicpc.net

VERSION 2.0

import sys
from collections import deque

T = int(sys.stdin.readline())

for i in range(T):
    gae , chul = list(map(int,sys.stdin.readline().split()))
    idx = list(map(int , sys.stdin.readline().split()))
    gae = [i for i in range(gae)]

    res = deque()
    cnt = 0
    for i,v in enumerate(idx):
        res.append([v , i])
    while True:
        maxe = max(res)[0]
        idx = res.popleft()

        if maxe == idx[0]:
            cnt +=1
            if idx[1] == chul:
                print(cnt)
                break
        else:
            res.append(idx)

VERSION 1.0

import sys
from collections import deque

T = int(sys.stdin.readline())
res_fin = []
for _ in range(T):
    B = list(map(int , sys.stdin.readline().split()))
    c = deque(map(int, sys.stdin.readline().split()))
    i = 0
    d = deque([v,i] for i,v in enumerate(c))
    res =[]
    # print(d)
    # d = sorted(d , key = lambda x: (x[0] , x[1]) ,reverse=True)
    # e = sorted(d , key = lambda x: x[0]  ,reverse=True)
    res = []

    maxe = max(d)[0]

    while True:
        if len(d)==0:
            break
        else:
            maxe = max(d)[0]
            if d[0][0] == maxe:
                res.append(d.popleft())
            else:
                d.append(d.popleft())
    idx =0
    for k,p in res:
        idx+=1
        if p==B[1]:
            res_fin.append(idx)
for i in res_fin:
    print(i)

1. [v, k for k,v in enumerate(c)] ==> enumerate 함수는 원소에 순서값을 부여 할 수 있다!

 

2. sorted(d, key = lambda x: (x[0] , x[1]) , reverse = True) ==> 리스트 내에 있는 리스트의 이중정렬이 가능하다.

 

3. max(d)[0] ==> 이중 리스트내 첫번째 인자들의 max 값 추출할 수 있다.

728x90
반응형

+ Recent posts