-
1966 - 프린터 큐Programming/BackJoon 2023. 3. 15. 08:43728x90
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