ํ (Queue)
- ํ์ชฝ ๋์์๋ง ์๋ฃ๋ฅผ ๋ฃ๊ณ ๋ค๋ฅธ ํ์ชฝ ๋์์๋ง ๋บ ์ ์๋ ์๋ฃ๊ตฌ์กฐ
- ๋จผ์ ๋ฃ์ ๊ฒ์ด ๊ฐ์ฅ ๋จผ์ ๋์ค๊ธฐ ๋๋ฌธ์ First In Frist Out (FIFO) ๋ผ๊ณ ๋ ํ๋ค.
push: ํ์ ์๋ฃ๋ฅผ ๋ฃ๋ ์ฐ์ฐpop: ํ์์ ์๋ฃ๋ฅผ ๋นผ๋ ์ฐ์ฐfront: ํ์ ๊ฐ์ฅ ์์ ์๋ ์๋ฃ๋ฅผ ๋ณด๋ ์ฐ์ฐback: ํ์ ๊ฐ์ฅ ๋ค์ ์๋ ์๋ฃ๋ฅผ ๋ณด๋ ์ฐ์ฐempty: ํ๊ฐ ๋น์ด์๋์ง ์๋์ง๋ฅผ ์์๋ณด๋ ์ฐ์ฐsize: ํ์ ์ ์ฅ๋์ด์๋ ์๋ฃ์ ๊ฐ์๋ฅผ ์์๋ณด๋ ์ฐ์ฐ- cf,
- ์คํ์ C++ ์ ๊ฒฝ์ฐ์๋ STL ์ queue
- Java ์ ๊ฒฝ์ฐ์๋ java .util .Queue ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค
์ผ์ฐจ์ ๋ฐฐ์ด ํ๋๋ก ๊ตฌํํ ์ ์๋ค. (ํ์ ํฌํจ๋์ด์๋ ๋ด์ฉ์ [begin,end) ์ด๋ค)
1int queue[10000];2int begin = 0;3int end = 0;
1. ํ - 10845
python
1import sys23input = sys.stdin.readline # ์ ๋ ฅ ์๋ ํฅ์์ ์ํด ์ฌ์ฉ4n = int(input()) # ๋ช ๋ น์ด ๊ฐ์ ์ ๋ ฅ56queue = [0] * n # ํ๋ฅผ ๋ํ๋ผ ๋ฆฌ์คํธ ์ด๊ธฐํ7begin = 0 # ํ์ ์์ ์ธ๋ฑ์ค ์ด๊ธฐํ8end = 0 # ํ์ ๋ ์ธ๋ฑ์ค ์ด๊ธฐํ910for _ in range(n):11# ๋ช ๋ น์ด์ ์ถ๊ฐ ๊ฐ๋ค์ ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก ๋๋ ๋ฆฌ์คํธ์ ์ ์ฅ12cmd, *val = input().split()1314if cmd == "push":15num = int(val[0]) # ์ถ๊ฐํ ์ซ์ ์ถ์ถ16queue[end] = num # ํ์ ๋์ ์ซ์ ์ถ๊ฐ17end += 1 # ๋ ์ธ๋ฑ์ค ์ฆ๊ฐ18elif cmd == "front":19# ํ๊ฐ ๋น์ด์๋ ๊ฒฝ์ฐ20if begin == end:21print(-1)22# ํ์ ์์๊ฐ ์ถ๋ ฅ23else:24print(queue[begin])25elif cmd == "size":26# ํ์ ์๋ ์์ ๊ฐ์ ์ถ๋ ฅ27print(end - begin)28elif cmd == "empty":29# ํ๊ฐ ๋น์ด์๋ ๊ฒฝ์ฐ30if begin == end:31print(1)32else:33print(0)34elif cmd == "pop":35# ํ๊ฐ ๋น์ด์๋ ๊ฒฝ์ฐ36if begin == end:37print(-1)38else:39print(queue[begin]) # ํ์ ์์๊ฐ ์ถ๋ ฅ40begin += 1 # ์์ ์ธ๋ฑ์ค ์ฆ๊ฐ41elif cmd == "back":42# ํ๊ฐ ๋น์ด์๋ ๊ฒฝ์ฐ43if begin == end:44print(-1)45else:46# ํ์ ๋๊ฐ ์ถ๋ ฅ47print(queue[end - 1])
1. ์์ธํธ์ค ๋ฌธ์ - 1158
- ์์ธํธ์ค ๋ฌธ์ ๐ https://www.acmicpc.net/problem/1158
python
1from collections import deque # ๋ฑ์ ์ฌ์ฉํ๊ธฐ ์ํด collections ๋ชจ๋ ์ํฌํธ23n, m = map(int, input().split()) # n๊ณผ m์ ์ ๋ ฅ๋ฐ์ ์ ์๋ก ๋ณํํ์ฌ ํ ๋น4q = deque() # ๋ฑ(ํ) ์ด๊ธฐํ56# 1๋ถํฐ n๊น์ง์ ์ซ์์ ๋ํด ๋ฐ๋ณต, ๋ฑ์ ์ซ์ ์ถ๊ฐ7for i in range(1, n + 1):8q.append(i)910# ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ ๋ฆฌ์คํธ ์ด๊ธฐํ11ans = []1213# n-1๋ฒ ๋ฐ๋ณต (๋ง์ง๋ง ํ ๊ฐ์ ์ซ์๋ ๋ฐ๋ก ์ฒ๋ฆฌ)14for i in range(n - 1):15# m-1๋ฒ ๋ฐ๋ณต (m-1๋ฒ์งธ ์ซ์๊น์ง ์ผ์ชฝ์ผ๋ก ์ด๋)16for j in range(m - 1):17q.append(q.popleft()) # ๋งจ ์ ์ซ์๋ฅผ ๋นผ์ ๋ค๋ก ์ฎ๊น18# m-1๋ฒ ์ด๋ ํ ๋งจ ์ ์ซ์๋ฅผ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ์ ์ถ๊ฐ19ans += [q.popleft()]2021# ๋ง์ง๋ง์ผ๋ก ๋จ์ ์ซ์๋ฅผ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ์ ์ถ๊ฐ22ans += [q[0]]2324# ๊ฒฐ๊ณผ ๋ฆฌ์คํธ๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ์ฌ ์ถ๋ ฅ25print("<" + ", ".join(map(str, ans)) + ">")