모각코 (23)
[Python] 모각코 백준 문제풀이4
튼튼한장
2023. 7. 27. 14:42
2023.07.26🌸
- 10843 큐 ✅
- 2161 카드1 ✅
- 18258 큐2 ✅
- 2164 카드2 ✅
- 1966 프린터 큐 ✅
🌸 10845 큐

import sys
from collections import deque
N = int(sys.stdin.readline()) # 명령의 수
queue = deque()
for i in range(N):
X = list(sys.stdin.readline().split()) # 명령어
if X[0] == "push":
queue.append(X[1])
elif X[0] == "pop":
if len(queue) == 0:
print(-1)
else:
print(queue.popleft())
elif X[0] == "size":
print(len(queue))
elif X[0] == "empty":
if len(queue) == 0:
print(1)
else:
print(0)
elif X[0] == "front":
if len(queue) == 0:
print(-1)
else:
print(queue[0])
elif X[0] == "back":
if len(queue) == 0:
print(-1)
else:
print(queue[len(queue) - 1])
🌸 2161 카드1

import sys
from collections import deque
N = int(sys.stdin.readline()) # 카드 수
queue = deque()
A = [] # 버린 카드를 저장할 배열
for i in range(1, N + 1): # 카드 순서대로 놓기
queue.append(i)
for i in range(N - 1):
A.append(queue.popleft()) # 제일 위 카드 버리고 배열에 저장
queue.append(queue.popleft()) # 제일 위 값 뒤에 넣기
for i in range(len(A)):
print(A[i], end = " ")
print(queue[0])
🌸 18258 큐2

import sys
from collections import deque
N = int(sys.stdin.readline()) # 명령의 수
queue = deque()
for i in range(N):
X = list(sys.stdin.readline().split())
if X[0] == "push":
queue.append(X[1])
elif X[0] == "pop":
if len(queue) == 0:
print(-1)
else:
print(queue.popleft())
elif X[0] == "size":
print(len(queue))
elif X[0] == "empty":
if(len(queue) == 0):
print(1)
else:
print(0)
elif X[0] == "front":
if len(queue) == 0:
print(-1)
else:
print(queue[0])
elif X[0] == "back":
if(len(queue) == 0):
print(-1)
else:
print(queue[len(queue) - 1])
🌸2164 카드2

import sys
from collections import deque
N = int(sys.stdin.readline()) # 카드의 수
queue = deque()
for i in range(1, N + 1): # 1부터 N까지 카드
queue.append(i)
for i in range(N - 1): # 첫번째 값을 빼고 다음 값을 끝에 더한다
queue.popleft()
queue.append(queue.popleft())
print(queue.pop()) # 마지막으로 남은 값 출력
🌸 1966 프린터 큐

import sys
from collections import deque
X = int(sys.stdin.readline()) # 테스트 케이스 수
for i in range(X):
N, M = map(int, sys.stdin.readline().split()) # 문서의 개수, 해당 문서가 놓인 순서
count = 0 # 출력된 문서 개수 초기화
queue = deque(list(map(int, sys.stdin.readline().split()))) # 문서의 중요도
while(True):
if queue[0] >= max(queue): # 가장 크면 pop으로 삭제
count += 1
if M == 0:
break
else:
queue.popleft()
M -= 1
else:
queue.append(queue.popleft()) # 가장 크지 않으면 뒤로 보내기
if M == 0:
M = len(queue) - 1
else:
M -= 1 # 순서를 당기기
print(count)
queue.clear() # 큐 초기화
더보기
느낀점 ⭐
이번 4주차 큐 문제의 경우 '1966번 프린터 큐'를 제외하고 큰 무리 없이 풀 수 있었다.
프린터 큐 문제의 경우 문제를 이해하는 시간이 굉장히 오래걸렸고, 혼자서 문제를 이해할 수 없어 문제를 해결한 다른 분들의 코드를 보고 확인하였다. 다음 5주차의 경우 열심히 리스트, 튜플, 딕셔너를 준비하여 발표하고 문제도 미리 풀어봐야겠다. 모각코가 이제 2주 밖에 남지 않았는데 그동안 실버 5에서 3이 된 것처럼 모각코가 끝날 때 쯤에 골드가 될 수 있도록 다양한 문제들을 더 많이 풀어봐야겠다.