1. 문제 설명


2. 코드
import sys
from collections import deque
input = sys.stdin.readline
N = int(input().strip())
A = list(map(int,input().split()))
B = list(map(int,input().split()))
M = int(input().strip())
C = list(map(int,input().split()))
D = deque(b for a,b in zip(A,B) if a == 0)
out = []
for x in C:
D.appendleft(x)
out.append(str(D.pop()))
print(" ".join(out))
3. 풀이 과정
스택이랑 큐일때를 구분해서 적용시키면 되는 문제이다.
스택일 때는 후입선출로 무시하고 넘어가면 된다.
큐일 때는 교체하면 된다.
코드로 구현할 때, 큐에 대한 문제는 덱으로 구현시키면 좀 더 편하게 구현할 수 있다.
deque 패키지를 받고, D에 a가 0, 큐일 때만 B에서 값을 가져와 덱을 구성한다.
출력시킬 빈 리스트 out을 만들고,
C의 값들을 하나씩 적용시킨다.
큐일때만 교체가 되기 때문에
D에 값 x를 appendleft()으로 맨 앞에다 넣고
pop()으로 맨 뒷 값을 제거한다.
out.append(str())로 바로 넣어서, 제거한 값을 문자열 변환 후, out에 추가하는 것까지 한다.
for문을 빠져나오면 join()으로 공백을 추가하여 출력한다.
(문자열 변환을 하는 이유는 join()함수를 쓰기 위함이다.)
4. 자투리 개념
1. 스택 (Stack)
- 정의 : 데이터를 한쪽 끝(top)에서만 넣고(push) 꺼내(pop)는 구조
- 특징 : 후입선출(LIFO)
- 비유 : 접시 더미
- 대표 연산
- push(x), pop(), peek()
2. 큐 (Queue)
- 정의 : 데이터를 한쪽 끝(rear)에서 넣고, 반대쪽 끝(front)에서 꺼내는 구조
- 특징 : 선입선출(FIFO)
- 비유 : 줄 서기
- 대표 연산
- enqueue(x), dequeue(), front()
3. 덱 (Deque, Double-Ended Queue)
- 정의 : 양쪽 끝(front, rear)에서 모두 삽입과 삭제가 가능한 구조
- 특징 : 스텍과 큐의 성격을 모두 가짐
- 비유 : 양쪽에서 들어오고 나갈 수 있는 출입구가 있는 줄
- 대표 연산
- append(x), appendleft(x), pop(), popleft()
4. * 언패킹(unpacking) 연산자
- 리스트나 튜플을 낱개 인자처럼 풀어주는 역할
반응형
'Baekjoon(Python) > 단계별로 풀어보기(Python)' 카테고리의 다른 글
| [백준][17단계 조합론] 24723번 /녹색거탑 (파이썬/Python) (0) | 2025.10.02 |
|---|---|
| [백준][17단계 조합론] 15439번 /베라의 패션 (파이썬/Python) (0) | 2025.10.02 |
| [백준][16단계 스택, 큐, 덱 1] 2346번 /풍선 터뜨리기 (파이썬/Python) (0) | 2025.09.29 |
| [백준][16단계 스택, 큐, 덱 1] 28279번 /덱 2 (파이썬/Python) (0) | 2025.09.26 |
| [백준][16단계 스택, 큐, 덱 1] 11866번 /요세푸스 문제 0 (파이썬/Python) (0) | 2025.09.24 |