ํ

8/19/2025

ํ

์Šคํƒ์ด๋ž‘์€ ๋ฐ˜๋Œ€๋กœ ๋จผ์ € ๋“ค์–ด๊ฐ„๊ฒƒ์ด ๋จผ์ € ๋‚˜์˜ค๋Š” ์ž๋ฃŒ๊ตฌ์กฐ.
FIFO - Fist In First Out.

push์™€ pop ๋Œ€์‹  EnQueue์™€ DeQueue๋ฅผ ์‚ฌ์šฉ.
push๊ฐ€ ๋งจ ์•ž์— ๋„ฃ๊ธฐ๋ผ๋ฉด, EnQueue๋Š” ๋งจ ๋’ค์— ๋„ฃ๊ธฐ.
pop๊ณผ DeQueue๋Š” ๋ชจ๋‘ ๋งจ ์•ž์—์„œ ์ œ๊ฑฐํ•˜๊ธฐ.

์–ด๋ ˆ์ด๋กœ ๊ตฌํ˜„

์›ํ˜•

์Šคํƒ์—์„œ๋Š” ๋“ค์–ด๊ฐ€๋Š” ์ชฝ๊ณผ ๊บผ๋‚ด๋Š” ์ชฝ์˜ ๋ฐฉํ–ฅ์ด ๋˜‘๊ฐ™๋‹ค.
ํ•˜์ง€๋งŒ ํ๋Š” ๋“ค์–ด๊ฐ€๋Š”๊ฑด ๋’ค์—์„œ ๋“ค์–ด๊ฐ€๊ณ , ๊บผ๋‚ผ๋•Œ๋Š” ์•ž์—์„œ ๊บผ๋‚ธ๋‹ค. ๋ฐฉํ–ฅ์ด ๋‹ค๋ฅด๋‹ค.
๊ทธ๋ž˜์„œ ์ผ๋ฐ˜ ์–ด๋ ˆ์ด๋กœ ํ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด, ๋ฐฐ์—ด์˜ ์•ž ๊ณต๊ฐ„์ด ๋‚ญ๋น„๋  ์ˆ˜ ์žˆ๋‹ค. ๊ธธ์ด 5์˜ ์–ด๋ ˆ์ด [1,2,3,4,5]์—์„œ 1๊ณผ 2๊ฐ€ ๋น ์ง€๋ฉด [ , ,3,4,5]๊ฐ€ ๋œ๋‹ค.
์ธํ๋Š” ๋’ค์—์„œ๋ถ€ํ„ฐ ๋„ฃ๊ธฐ๋•Œ๋ฌธ์—, ๋’ค์— ๊ณต๊ฐ„์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋”์ด์ƒ ๋„ฃ์„ ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค(์•ž์— ๋‘ ์ž๋ฆฌ๊ฐ€ ๋น„์–ด์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ ).

๊ทธ๋ž˜์„œ (๊ฐœ๋…์ ์œผ๋กœ)์„ ํ˜•์ด ์•„๋‹Œ ์›ํ˜•์ธ ์–ด๋ ˆ์ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ด๊ฑธ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ front, rear ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ฒ˜์Œ์— ์–ด๋ ˆ์ด๋ฅผ ๋งŒ๋“ค๋•Œ front,rear ๋ชจ๋‘ -1์œผ๋กœ ํ• ๋‹นํ•œ๋‹ค. (๋น„์–ด์žˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด์„œ)

์ธํ

์›๋ฆฌ๋Š” ๊ฐ„๋‹จํ•˜๋‹ค. ํ•ญ์ƒ rear์˜ ์ˆœ์„œ์— ๊ฐ’์„ ๋„ฃ๋Š”๊ฒƒ.arr[rear] = var.

  1. ์ผ๋‹จ ํ๊ฐ€ ๊ฝ‰ ์ฐจ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. (๋ฐฉ๋ฒ•์€ ๋ฐ‘์—์„œ)
  2. rear = rear + 1 (๋ฐ‘์—์„œ ๋‹ค์‹œ ํ™•์ธ)
  3. arr[rear] ์ž๋ฆฌ์— ๊ฐ’์„ ์‚ฝ์ž…

๋””ํ

์ œ๊ฑฐํ• ๋•Œ๋Š” ๋ฐ˜๋Œ€๋กœ ํ•ญ์ƒ front์˜ ์ˆœ์„œ์—์„œ ๊ฐ’์„ ์ œ๊ฑฐํ•˜๋Š”๊ฒƒ.

  1. ์ผ๋‹จ ํ๊ฐ€ ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. (๋ฐฉ๋ฒ•์€ ๋ฐ‘์—์„œ)
  2. front = front +1; (๋ฐ‘์—์„œ ๋‹ค์‹œ ํ™•์ธ)
  3. arr[front]์— ์žˆ๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜.

ํ๊ฐ€ ๊ฝ‰ ์ฐจ์žˆ๋Š”์ง€, ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธ (๋ชจ๋“ˆ๋Ÿฌ)

๋ณดํ†ต์€ rear - front๋ฅผ ํ•˜๋ฉด ์–ด๋ ˆ์ด ์•ˆ์— ๋ช‡๊ฐœ์˜ ๊ฐ’์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜์žˆ๊ฒ ์ง€๋งŒ,
๋งŒ์•ฝ์— ํ•œ๋ฐ”ํ€ด ์ด์ƒ ๋Œ์•„๊ฐ€์„œ rear < front ์ธ ์ƒํ™ฉ์—์„  ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?

[5, ,2,3,4] ๊ฝ‰ ์ฐจ์žˆ๋Š” ์ƒํ™ฉ์—์„œ rear๊ฐ€ 0์ด๊ณ  front๊ฐ€ 2์ด๋ผ๊ณ  ๊ฐ€์ •.
์ด์ œ ๋‹ค์Œ ์ฐจ๋ก€๋‹ˆ๊นŒ rear++๊ฐ€ ๋ผ์„œ rear๋Š” 1์ด ๋˜๊ณ , ์—ฌ๊ธฐ์— ์–ด๋ ˆ์ด์˜ ํฌ๊ธฐ์ธ 5๋ฅผ ๋”ํ•ด์„œ 6-2 = 4 ๋‹ˆ๊นŒ ๋น„์–ด์žˆ๋Š” ์ž๋ฆฌ๊ฐ€ ํ•˜๋‚˜ ์žˆ๋Š”๊ฑธ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰ rear % arr.length๋ฅผ ํ•ด์„œ ๊ฑฐ๊ธฐ์„œ front๋งŒํผ ๋นผ์ฃผ๋ฉด ๋˜๋Š”๊ฒƒ.
์ •๋ฆฌํ•˜์ž๋ฉด if((rear+1) % arr.length - front==0) ์˜ ์กฐ๊ฑด์ด ์ฐธ์ด๋ฉด ํ๊ฐ€ ๊ฝ‰ ์ฐจ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ ์‚ฌ์‹ค ์œ„์—์„œ ์ธํ(rear ์ฆ๊ฐ€)๊ณผ ๋””ํ(front ์ฆ๊ฐ€)๊ณผ์ •์—์„œ rear,front๋ฅผ ์ฆ๊ฐ€์‹œํ‚ฌ ๋•Œ ๋ชจ๋“ˆ๋Ÿฌ ๊ณ„์‚ฐ์„ ๋„ฃ์–ด์ค˜์•ผ ํ•œ๋‹ค.
rear = (rear + 1) % arr.length
front = (front + 1) % arr.length

๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธ์€ ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?
๋น„์–ด์žˆ๋‹ค๋Š”๊ฑด front๊ฐ’(๋งˆ์ง€๋ง‰์œผ๋กœ ๋””ํํ•œ ํ›„์˜ ์ธ๋ฑ์Šค)์ด rear(๋งˆ์ง€๋ง‰์œผ๋กœ ์ธํํ•œ ํ›„์˜ ์ธ๋ฑ์Šค)๊ฐ€ ๊ฐ™๋‹ค๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.
๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธ์€ ๋””ํํ•˜๊ธฐ ์ „์— ํ•˜๋Š”๊ฒƒ์ด๋‹ˆ๊นŒ [ , , ,1, ]๋ฅผ ๋””ํํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.
๋งˆ์ง€๋ง‰ ์ธํํ•œ ํ›„์˜ rear๋Š” 3์ผ๊ฒƒ์ด๊ณ ,
๋งˆ์ง€๋ง‰ ๋””ํํ•œ ํ›„์˜ front๋Š” 2์ผ๊ฒƒ์ด๋‹ค.
rear != front์ด๋‹ˆ ๋””ํ ๊ณผ์ •์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
(front + 1 ) % 5๋ฅผ ํ•˜๋ฉด 3์ด ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  1์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์ œ๊ฑฐ.

์ด์ œ ๋‹ค์‹œ ๋˜ ๋””ํ๋ฅผ ์‹œ๋„ํ•ด๋ณด๋ฉด front == rear ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ  ์‹ค์ œ๋กœ ์–ด๋ ˆ์ด๋„ ๋น„์–ด์žˆ๋‹ค.

์ด์ „ ์‹œ๊ฐ„์—๋Š” ์ผ๋ฐ˜ ์–ด๋ ˆ์ด๋กœ ์›ํ˜• ์–ด๋ ˆ์ด๋ฅผ ๋งŒ๋“ค์–ด ํ๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค.
์›ํ˜• ์–ด๋ ˆ์ด๋Š” front์™€ rear ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ๊ฐœ๋…์ ์œผ๋กœ ๊ตฌํ˜„ํ•œ ์–ด๋ ˆ์ด๋‹ค.
์ง€์šธ๋•Œ(๋””ํ)๋งˆ๋‹ค front ํฌ์ธํ„ฐ์˜ ๊ฐ’์ด ์ฆ๊ฐ€ํ•˜๊ณ  ์ถ”๊ฐ€ํ•  ๋•Œ(์ธํ) ๋งˆ๋‹ค rear๊ฐ’์ด ์ฆ๊ฐ€ํ•œ๋‹ค.

๋™์  ๋ฐฐ์—ด๋กœ ๊ตฌํ˜„

์ •์  ๋ฐฐ์—ด๋กœ ๊ตฌํ˜„ํ•œ ํ์—์„œ (rear + 1) % arr.length === front์ผ๋•Œ ํ๊ฐ€ ๋‹ค ์ฐผ๋‹ค๋Š”๊ฑธ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
์›ํ˜• ์–ด๋ ˆ์ด์—์„œ ๋นˆ ๊ณต๊ฐ„์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?
์ผ๋ฐ˜ ์„ ํ˜• ๋ฐฐ์—ด์—์„œ๋Š” ๊ทธ๋ƒฅ ์ƒˆ๋กœ์šด 2๋ฐฐ ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ  ์•ž์—์„œ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ๋ณต์‚ฌ๋ฅผ ํ•˜๋ฉด ๋์—ˆ๋Š”๋ฐ.

front > rear์ธ ๊ฒฝ์šฐ (๋ฐ˜๋Œ€๋กœ rear > front์ธ ๊ฒฝ์šฐ๋Š” ์• ์ดˆ์— ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค)

  1. ์ƒˆ๋กœ์šด 2๋ฐฐ ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ 
  2. 0๋ถ€ํ„ฐ rear๊นŒ์ง€ size(๋ณต์‚ฌ ์ „ ์›๋ž˜ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ)+i ์˜ ์œ„์น˜์— ๋ณต์‚ฌ.
  3. rear = rear + size ๋กœ rear ํฌ์ธํ„ฐ๋ฅผ ๋ฐฐ์—ด ๋์œผ๋กœ.
    ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด [c,d,e,a,b] rear=2 front3์—์„œ [c,d,e,a,b,c,d,e, , ] ๊ฐ€ ๋œ๋‹ค.
    ์•ž์— ์žˆ๋Š” c,d,e๋Š” front ์•ž์— ์žˆ์œผ๋‹ˆ ์‚ฌ์‹ค์ƒ ์ง€์›Œ์ง„๊ฒƒ ์ทจ๊ธ‰์ด ๋œ๋‹ค (๋‹ค์Œ์— ์ธํ๋ฅผ ํ•  ๋•Œ ๋ฎ์–ด์”Œ์›Œ์งˆ ํ…Œ๋‹ˆ๊นŒ).

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํฌ์ธํ„ฐ๊ฐ€ ๋‘ ๊ฐœ ํ•„์š”ํ•˜๋‹ค. front์™€ rear.

์‚ฝ์ž…

  1. ์ƒˆ๋กœ์šด ๋…ธ๋“œ ์ƒ์„ฑ, ๊ฐ’ ์ž…๋ ฅ
  2. ์ƒˆ๋กœ์šด ๋…ธ๋“œ์˜ nextํฌ์ธํ„ฐ์— null ์ž…๋ ฅ
  3. ํ๊ฐ€ ๋น„์–ด์žˆ๋‹ค๋ฉด (rear===null)front์™€ rear ๋ชจ๋‘ ์ด ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•œ๋‹ค.
  4. ํ๊ฐ€ ๋น„์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด rear๊ฐ€ ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•œ๋‹ค.

์‚ญ์ œ

  1. ํ๊ฐ€ ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธ (rear===null)
  2. temp ์ž„์‹œ๋ณ€์ˆ˜์— front ๊ฐ’์„ ๋„ฃ์–ด์ค€๋‹ค.
  3. ํ์˜ front ํฌ์ธํ„ฐ๋ฅผ ๋งจ ์•ž ๋…ธ๋“œ์˜ next๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ.
  4. front๊ฐ€ null์ด๋ผ๋ฉด, ์ฆ‰ ํ๊ฐ€ ๋น„์–ด์žˆ๊ฒŒ ๋œ๋‹ค๋ฉด rear๋„ null๋กœ ์„ค์ •.
    • ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‹ค์Œ์— ์ธํ๋ฅผ ํ•  ๋•Œ ์—„ํ•œ ๋…ธ๋“œ๋ฅผ ์ฐพ๊ฒŒ๋˜๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
  5. free(temp)