무향향수

[Python] 모각코 백준 문제풀이4 본문

모각코 (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이 된 것처럼 모각코가 끝날 때 쯤에 골드가 될 수 있도록 다양한 문제들을 더 많이 풀어봐야겠다.