๐ŸŽ‰ berenickt ๋ธ”๋กœ๊ทธ์— ์˜จ ๊ฑธ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๐ŸŽ‰
CS
๋ฐฑ์ค€-codeplus
๊ธฐ์ดˆ1
200-02-ํ

ํ (Queue)

  • ํ•œ์ชฝ ๋์—์„œ๋งŒ ์ž๋ฃŒ๋ฅผ ๋„ฃ๊ณ  ๋‹ค๋ฅธ ํ•œ์ชฝ ๋์—์„œ๋งŒ ๋บ„ ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
  • ๋จผ์ € ๋„ฃ์€ ๊ฒƒ์ด ๊ฐ€์žฅ ๋จผ์ € ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— First In Frist Out (FIFO) ๋ผ๊ณ ๋„ ํ•œ๋‹ค.
  • push : ํ์— ์ž๋ฃŒ๋ฅผ ๋„ฃ๋Š” ์—ฐ์‚ฐ
  • pop : ํ์—์„œ ์ž๋ฃŒ๋ฅผ ๋นผ๋Š” ์—ฐ์‚ฐ
  • front : ํ์˜ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ์ž๋ฃŒ๋ฅผ ๋ณด๋Š” ์—ฐ์‚ฐ
  • back : ํ์˜ ๊ฐ€์žฅ ๋’ค์— ์žˆ๋Š” ์ž๋ฃŒ๋ฅผ ๋ณด๋Š” ์—ฐ์‚ฐ
  • empty : ํ๊ฐ€ ๋น„์–ด์žˆ๋Š”์ง€ ์•„๋‹Œ์ง€๋ฅผ ์•Œ์•„๋ณด๋Š” ์—ฐ์‚ฐ
  • size : ํ์— ์ €์žฅ๋˜์–ด์žˆ๋Š” ์ž๋ฃŒ์˜ ๊ฐœ์ˆ˜๋ฅผ ์•Œ์•„๋ณด๋Š” ์—ฐ์‚ฐ
  • cf,
    • ์Šคํƒ์€ C++ ์˜ ๊ฒฝ์šฐ์—๋Š” STL ์˜ queue
    • Java ์˜ ๊ฒฝ์šฐ์—๋Š” java .util .Queue ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค

์ผ์ฐจ์› ๋ฐฐ์—ด ํ•˜๋‚˜๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. (ํ์— ํฌํ•จ๋˜์–ด์žˆ๋Š” ๋‚ด์šฉ์€ [begin,end) ์ด๋‹ค)

1
int queue[10000];
2
int begin = 0;
3
int end = 0;

1. ํ - 10845

python

1
import sys
2
3
input = sys.stdin.readline # ์ž…๋ ฅ ์†๋„ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์‚ฌ์šฉ
4
n = int(input()) # ๋ช…๋ น์–ด ๊ฐœ์ˆ˜ ์ž…๋ ฅ
5
6
queue = [0] * n # ํ๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋ฆฌ์ŠคํŠธ ์ดˆ๊ธฐํ™”
7
begin = 0 # ํ์˜ ์‹œ์ž‘ ์ธ๋ฑ์Šค ์ดˆ๊ธฐํ™”
8
end = 0 # ํ์˜ ๋ ์ธ๋ฑ์Šค ์ดˆ๊ธฐํ™”
9
10
for _ in range(n):
11
# ๋ช…๋ น์–ด์™€ ์ถ”๊ฐ€ ๊ฐ’๋“ค์„ ๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ  ๋ฆฌ์ŠคํŠธ์— ์ €์žฅ
12
cmd, *val = input().split()
13
14
if cmd == "push":
15
num = int(val[0]) # ์ถ”๊ฐ€ํ•  ์ˆซ์ž ์ถ”์ถœ
16
queue[end] = num # ํ์˜ ๋์— ์ˆซ์ž ์ถ”๊ฐ€
17
end += 1 # ๋ ์ธ๋ฑ์Šค ์ฆ๊ฐ€
18
elif cmd == "front":
19
# ํ๊ฐ€ ๋น„์–ด์žˆ๋Š” ๊ฒฝ์šฐ
20
if begin == end:
21
print(-1)
22
# ํ์˜ ์‹œ์ž‘๊ฐ’ ์ถœ๋ ฅ
23
else:
24
print(queue[begin])
25
elif cmd == "size":
26
# ํ์— ์žˆ๋Š” ์›์†Œ ๊ฐœ์ˆ˜ ์ถœ๋ ฅ
27
print(end - begin)
28
elif cmd == "empty":
29
# ํ๊ฐ€ ๋น„์–ด์žˆ๋Š” ๊ฒฝ์šฐ
30
if begin == end:
31
print(1)
32
else:
33
print(0)
34
elif cmd == "pop":
35
# ํ๊ฐ€ ๋น„์–ด์žˆ๋Š” ๊ฒฝ์šฐ
36
if begin == end:
37
print(-1)
38
else:
39
print(queue[begin]) # ํ์˜ ์‹œ์ž‘๊ฐ’ ์ถœ๋ ฅ
40
begin += 1 # ์‹œ์ž‘ ์ธ๋ฑ์Šค ์ฆ๊ฐ€
41
elif cmd == "back":
42
# ํ๊ฐ€ ๋น„์–ด์žˆ๋Š” ๊ฒฝ์šฐ
43
if begin == end:
44
print(-1)
45
else:
46
# ํ์˜ ๋๊ฐ’ ์ถœ๋ ฅ
47
print(queue[end - 1])

1. ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ - 1158

python

1
from collections import deque # ๋ฑ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด collections ๋ชจ๋“ˆ ์ž„ํฌํŠธ
2
3
n, m = map(int, input().split()) # n๊ณผ m์„ ์ž…๋ ฅ๋ฐ›์•„ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํ• ๋‹น
4
q = deque() # ๋ฑ(ํ) ์ดˆ๊ธฐํ™”
5
6
# 1๋ถ€ํ„ฐ n๊นŒ์ง€์˜ ์ˆซ์ž์— ๋Œ€ํ•ด ๋ฐ˜๋ณต, ๋ฑ์— ์ˆซ์ž ์ถ”๊ฐ€
7
for i in range(1, n + 1):
8
q.append(i)
9
10
# ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•  ๋ฆฌ์ŠคํŠธ ์ดˆ๊ธฐํ™”
11
ans = []
12
13
# n-1๋ฒˆ ๋ฐ˜๋ณต (๋งˆ์ง€๋ง‰ ํ•œ ๊ฐœ์˜ ์ˆซ์ž๋Š” ๋”ฐ๋กœ ์ฒ˜๋ฆฌ)
14
for i in range(n - 1):
15
# m-1๋ฒˆ ๋ฐ˜๋ณต (m-1๋ฒˆ์งธ ์ˆซ์ž๊นŒ์ง€ ์™ผ์ชฝ์œผ๋กœ ์ด๋™)
16
for j in range(m - 1):
17
q.append(q.popleft()) # ๋งจ ์•ž ์ˆซ์ž๋ฅผ ๋นผ์„œ ๋’ค๋กœ ์˜ฎ๊น€
18
# m-1๋ฒˆ ์ด๋™ ํ›„ ๋งจ ์•ž ์ˆซ์ž๋ฅผ ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€
19
ans += [q.popleft()]
20
21
# ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚จ์€ ์ˆซ์ž๋ฅผ ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€
22
ans += [q[0]]
23
24
# ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ถœ๋ ฅ
25
print("<" + ", ".join(map(str, ans)) + ">")