코딩 테스트/Baekjoon

S3 1966. 프린터 큐

  • -
728x90
반응형

문제 보기 :  1966번: 프린터 큐


문제

  • 정답률 : 58%


작성 코드

from collections import deque

def importance(arr,arr1,n): 
    k = 0
    while arr:
        idx, imp = arr.popleft()
        left = [i for i,j in arr if j>imp]
        if left:
            arr.append((idx, imp))
        else:
            k += 1 # 프린트
            if idx == n and arr1[n] == imp:
                return k
    return k

T = int(input())
for _ in range(T):
    n,m = map(int,input().split())
    ls = list(map(int,input().split()))
    arr1 = {}
    for i,j in enumerate(ls):
        arr1[i]=j
    arr = deque(list(arr1.items()))
    print(importance(arr,arr1,m))

풀이

딕셔너리, (index, value)를 원소로 갖는 큐, 대소 비교를 사용하는 시뮬레이션 문제라 복잡하게 느껴졌다. 

k는 프린트한 값이 있을 때만 +1를 해야함에 유의해야하고, 항상 느끼는 거지만 문제풀이 시 필기로 알고리즘 원리를 체감하는게 중요한 것 같다.

k처리에서 가장 많은 시간이 걸렸고, idx==n and arr1[n]==imp도 처음에는 arr1[n] == imp만 확인해서 에러가 발생했었다. (n이 달라도 imp가 같은 경우가 존재함을 고려하지 않음)

그리고 다시 보니 이 부분은 (idx, imp) == (n, arr1[n])로 변경할 수 있을 것 같다.

320x100
728x90

'코딩 테스트 > Baekjoon' 카테고리의 다른 글

G4 14502. 연구소  (0) 2024.11.09
S2 1927. 최소 힙  (0) 2024.11.08
S3 15652. N과 M (4)  (0) 2024.11.07
S3 11727. 2×n 타일링 2  (0) 2024.11.07
S3 11659. 구간 합 구하기 4  (0) 2024.11.05
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.