-
[알고리즘] 백준 1966 - 프린터 큐알고리즘 2022. 11. 9. 16:34728x90
1. 문제
2. 접근
1. 문제의 제목 처럼 큐를 사용해야한다
1 - 1. 큐는 deque 혹은 list를 이용한 큐 방식을 사용하면 된다
2. 주의 할점은 m의 위치에 있는 target 값이다
2 - 1. 테스트 케이스의 마지막 번호와 같이 같은 수들이 있을때는 같은 값으로 인지해 정답을 결정해 버리기 때문이다.
3. 따라서 m 의 값을 -1 씩 해주고 m == 0 일 경우 출력되는게 아니라면 m = len(q) - 1 을 해준다
3 - 1. -1 을 해주는 이유는 인덱스가 0부터 시작이기 때문이다.
3. 풀이
# 프린터 큐 import sys input = sys.stdin.readline for _ in range(int(input())): # 개수, 뽑고 싶은 유인물 위치 n, m = map(int, input().split()) count = 0 q = list(map(int, input().split())) while True: target = q[m] if m == -1: m = len(q) - 1 if q[0] < max(q): q.append(q[0]) q.pop(0) m -= 1 else: count += 1 if q[0] == target and m == 0: print(count) break else: q.pop(0) m -= 1
'알고리즘' 카테고리의 다른 글
[알고리즘] 프로그래머스 - 정수 삼각형 (0) 2022.11.22 [알고리즘] 백준 주사위 - 1041 (0) 2022.11.15 [알고리즘] 백준 선긋기 - 2170 (0) 2022.11.04 [알고리즘] 백준 1300 - K번째 수 (0) 2022.11.04 [알고리즘] 백준 1135 - 뉴스 전하기 (0) 2022.11.03