ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1966 - 프린터 큐
    Programming/BackJoon 2023. 3. 15. 08:43
    728x90

    1) 문제 설명

    프린터 작업을 하는데, 우선순위를 두고 해야한다. 

    주어진 프린터 작업 리스트 중에서 우선순위가 가장 높은것부터 출력하고, 내 뒤에 나보다 우선순위가 높은게 있으면 출력하지 않는다. 

     

    2) 문제 분석

    Queue를 사용해서 푸는 문제

    우선순위까지는 알겠는데, index를 어떻게 같이 저장할 것인지 고민 필요 -> 튜플형태로 (value, idx)로 저장

     

    enumerate를 사용해서 idx와 우선순위를 쉽게 저장할 수 있다. 

    lst = [1,2,3,4]
    
    for idx, value in enumerate(lst):
        print(idx, value)

     

    우선순위를 튜플에 먼저 저장한 이유는 max값을 찾을때 쉽게 하려고 그랬다

    import sys
    t = int(input())
    while t > 0:
        n, m = map(int, input().split())
        lst = list(map(int, sys.stdin.readline().rstrip().split()))
    
        # 튜플로 만들어보자 - 리스트 컴프리헨션
        tuple_lst = [(val, idx) for idx, val in enumerate(lst)]
    
        cnt = 0
        while True:
            # tuple의 맨 처음과 제일 큰 값이 같을 경우
            if tuple_lst[0][0] == max(tuple_lst, key=lambda temp: temp[0])[0]:
                cnt += 1
                if tuple_lst[0][1] == m:
                    print(cnt)
                    break
                else:
                    tuple_lst.pop(0)
            else:
                tuple_lst.append(tuple_lst.pop(0))    
                
        t -= 1

    'Programming > BackJoon' 카테고리의 다른 글

    1699 - 제곱수의 합  (0) 2023.03.17
    2579 - 계단 오르기  (0) 2023.03.16
    1912 - 연속합  (1) 2023.03.15
    2156 - 포도주 시식  (0) 2023.03.14
    9465 - 스티커  (0) 2023.03.14
Designed by Tistory.