반응형
Recent Posts
Notice
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 백준
- 코딩테스트 준비
- 해시
- 코딩테스트준비
- 99항해
- 기능개발
- 활성화 함수
- 개발자 취업
- dfs
- leetcode
- 99클럽
- 알고리즘
- 프로그래머스
- 스택
- BFS
- 백준 2309
- 딥러닝
- python 2309
- softeer
- easy 딥러닝
- 큐
- 파이썬
- 구현
- Python
- 항해99
- BOJ
- til
- 개발자취업
- 혁펜하임
- boj 2309
Archives
- Today
- Total
동까의 코딩
[Python] 백준 1966 : 프린터 큐 본문
반응형
오늘은 프린터 큐 문제를 풀어보았습니다.
문제는 구조는 기본 Queue의 자료구조인 FIFO - First In First Out를 문제로 만들었습니다.
https://www.acmicpc.net/problem/1966
1966번: 프린터 큐
여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에
www.acmicpc.net
문제 풀이 방법으로는 deque를 사용해서 최대한 queue에 중점을 주고 문제를 풀었습니다.
1. 먼저 m의 위치를 기억해 주고, 위치를 옮겨줄 때마다 위치를 업데이트해 준다.
2. 가장 큰 값이 먼저 나가므로 맨 앞에 가장 큰 값이 오면 pop을 진행하고 count를 올려준다.
3. 값이 나갈 때 m의 위치가 맨 앞에 위치하면 count를 출력하고, 반복문을 중지한다.
from collections import deque
t = int(input())
for _ in range(t):
n, m = map(int, input().split(' '))
cnt = 1
num_list = deque(map(int, input().split(' ')))
while True:
max_num = max(num_list)
if num_list[0] == max_num:
if m == 0:
print(cnt)
break
num_list.popleft()
m -= 1
cnt += 1
if m < 0:
m = len(num_list) - 1
else:
num_list.append(num_list.popleft())
m -= 1
if m < 0:
m = len(num_list) - 1
다른 풀이 방법
enumerate를 사용하여 (숫자, 위치)를 queue에 넣어줘서 푸는 방법이 있다. 해당 방법이 더 간편한 코드로 나온다.
t = int(input())
for _ in range(t):
n, m = list(map(int, input().split(' ')))
num_list = list(map(int, input().split(' ')))
num_list = [(i, idx) for idx, i in enumerate(num_list)]
cnt = 0
while True:
if num_list[0][0] == max(num_list, key=lambda x : x[0])[0]:
cnt += 1
if num_list[0][1] == m:
print(cnt)
break
else:
num_list.pop(0)
else:
num_list.append(num_list.pop(0))
오늘도 감사합니다.
반응형
'문제 풀이 > 백준' 카테고리의 다른 글
[Python] 백준 13565 : 침투 (1) | 2024.03.30 |
---|---|
[Python] 백준 5397 : 키로거 (0) | 2024.03.10 |
[Python] 백준 1874 : 스택 수열 (0) | 2024.03.09 |
[Python] 백준 2920 : 음계 (0) | 2024.03.09 |
[Python] 백준 2083 : 럭비 클럽 (0) | 2024.03.05 |