Source
https://www.acmicpc.net/problem/15828
15828번: Router
인터넷을 사용하기 위해서는 컴퓨터에 인터넷 회선을 연결하거나 Wi-Fi를 연결해야 한다. 이렇게 연결된 네트워크를 통해 컴퓨터에는 통신이 가능하다. 마음에 드는 노래나 동영상이 있는 곳에
www.acmicpc.net
Code
import sys
from collections import deque
input = sys.stdin.readline
N = int(input())
# 버퍼의 크기
Router = deque()
# 라우터 큐 선언
while True:
num = int(input())
if num == 0:
Router.popleft()
elif num == -1:
if Router:
print(*Router)
break
else:
print('empty')
break
elif len(Router) < N:
Router.append(num)
How to solve?
큐의 특징을 이용한 문제이다.
1. 먼저 Router를 deque로 선언한다.
2. while문을 이용해 -1이 입력될때까지 반복하게 한다.
3. 큐는 오른쪽에서 들어가서 popleft()하면 앞에서 부터 삭제된다 이 성질을 이용해 로직을 작성한다.
if num == 0:
Router.popleft()
# 큐가 쌓여있을 경우 먼저 빼줘야 하기 때문에 가장 앞에 작성
elif num == -1:
# -1이 입력된다면 종료하고 결과를 출력
if Router:
print(*Router)
break
else:
print('empty')
break
elif len(Router) < N:
# 0과 -1이 아닐경우
# 라우터가 다 차있다면 continue
# 라우터가 비어있다면 append
Router.append(num)
'Problem solve' 카테고리의 다른 글
[백준] 11279번 최대 힙 (Python) (0) | 2023.01.13 |
---|---|
[백준] 11866번 요세푸스 문제 (Python) (0) | 2023.01.12 |
[백준] 1874번 스택 수열 (Python) (0) | 2022.12.31 |
[백준] 2108 통계학 (Python) (0) | 2022.12.16 |
[백준] 2295번 세 수의 합 (Python) (0) | 2022.12.15 |