๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Computer Science

[์ž๋ฃŒ๊ตฌ์กฐ] ํ - ์ •๋ฆฌ ๋ฐ ์—ฐ์Šต๋ฌธ์ œ

by Leica 2019. 11. 20.
๋ฐ˜์‘ํ˜•

1. ํ(queue)์˜ ๊ฐœ๋…

ํ๋Š” ์ค„์„ ์„  ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ชจ์Šต์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

- ํ์˜ ์Šคํƒ์˜ ๊ณตํ†ต์ ์€ ๊ฐ์ฒด์™€ ๊ทธ ๊ฐ์ฒด๊ฐ€ ์ €์žฅ๋˜๋Š” ์ˆœ์„œ๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๊ด€ํ•œ ์ถ”์ƒ ์ž๋ฃŒํ˜•์ด๋ผ๋Š” ๊ฒƒ

- ๊ฐ€์žฅ ๋จผ์ € ์ž…๋ ฅ๋œ ์ž๋ฃŒ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์ถœ๋ ฅ๋˜๋Š” ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.

- FIFO(First In First Out, ์„ ์ž…์„ ์ถœ)

- FCFS(First Come First Servce, ์„ ์ฐฉ์ˆœ ์„œ๋ธŒ)

- ํ•œ์ชฝ ๋์—์„œ๋Š” ์›์†Œ์˜ ์‚ฝ์ž… ์—ฐ์‚ฐ๋งŒ, ๋‹ค๋ฅธ ํ•œ์ชฝ ๋์—์„œ๋Š” ์‚ญ์ œ ์—ฐ์‚ฐ๋งŒ ๋ฐœ์ƒ

- ๋‘๊ฐœ์˜ ํ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜(์ผ๋ฐ˜์ ์œผ๋กœ front, rear๋กœ ๋ช…๋ช…)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

- front๋Š” ํ์˜ ์‚ญ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ง€์ ์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

- rear๋Š” ํ์˜ ์‚ฝ์ž…์ด ๋ฐœ์ƒํ•˜๋Š” ์ง€์ ์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

- ์‚ฝ์ž… ์‹œ rear๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ์‚ญ์ œ ์‹œ front๋ฅผ ๊ฐ์†Œ์‹œํ‚จ๋‹ค.

 

2. ํ์˜ ์ถ”์ƒ ์ž๋ฃŒํ˜•(ADT)

* Object(๊ฐ์ฒด)
0๊ฐœ ์ด์ƒ์˜ ์›์†Œ๋ฅผ ๊ฐ–๋Š” ์œ ํ•œ ์ˆœ์„œ ๋ฆฌ์ŠคํŠธ

* Functions(์—ฐ์‚ฐ)
queue∈Queue, item∈element, maxQueueSize∈positive interger์ธ ๋ชจ๋“  queue, item, maxQueueSize์— ๋Œ€ํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ฐ์‚ฐ์ด ์ •์˜๋œ๋‹ค. queue๋Š” 0๊ฐœ ์ด์ƒ์˜ ์›์†Œ๋ฅผ ๊ฐ–๋Š” ํ, item์€ ํ์— ์‚ฝ์ž…๋˜๋Š” ์›์†Œ, maxQueueSize๋Š” ํ์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๋ฅผ ์ •์˜ํ•˜๋Š” ์ •์ˆ˜์ด๋‹ค.

โ‘  Queue createQueue(maxQueueSize) ::= ํ์˜ ํฌ๊ธฐ๊ฐ€ maxSizeQueue์ธ ๋นˆ ํ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•œ๋‹ค;

โ‘ก Boolean isQueueFull(queue) ::=
    if((queue์˜ elements ๊ฐœ์ˆ˜) == maxQueueSize)
    then { 'TRUE' ๋ฐ˜ํ™˜; }
    else { 'FALSE' ๋ฐ˜ํ™˜; }

โ‘ข Queue addQueue(queue, item) ::=
    if(isQueueFull(queue))
    then { 'queueFull' ์ถœ๋ ฅ; }
    else { ํ์˜ rear์—์„œ item์„ ์‚ฝ์ž…ํ•˜๊ณ  ํ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค; }

โ‘ฃ Boolean isQueueEmpty(queue) ::=
    if(rear == front)
    then { 'TRUE' ๋ฐ˜ํ™˜; }
    else { 'FALSE' ๋ฐ˜ํ™˜; }

โ‘ค Element deleteQueue(queue) ::=
    if(isQueueEmpty(queue))
    then { 'queueEmpty' ๋ฐ˜ํ™˜; }
    else { ํ์˜ front์— ์žˆ๋Š” element๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•œ๋‹ค; }

  ํ์˜ ์ถ”์ƒ ์ž๋ฃŒํ˜•์—์„œ ์ •์˜๋œ ์—ฐ์‚ฐ์€ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ์ž์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ •์˜๋˜๊ณ  ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ๊ณ , ์ปดํŒŒ์ผ๋Ÿฌ ์„ค๊ณ„์ž์— ๋”ฐ๋ผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ๋‹ค๋ฅด๊ฒŒ ์ œ๊ณต๋  ์ˆ˜ ์žˆ๋‹ค.

 

3. ํ ์—ฐ์‚ฐ ์ˆ˜ํ–‰

โ‘  createQueue(4);
โ‘ก addQueue(queue, 'A');
โ‘ข addQueue(queue, 'B');
โ‘ฃ addQueue(queue, 'C');
โ‘ค deleteQueue(queue);
โ‘ฅ deleteQueue(queue);
โ‘ฆ deleteQueue(queue);
โ‘ง addQueue(queue, 'D');

ํ ์—ฐ์‚ฐ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ

โ‘ฆ๊ณผ ๊ฐ™์ด rear ํฌ์ธํ„ฐ์™€ front ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ™์€ ์žฅ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉด(=๊ฐ™์€ ๊ฐ’์ด๋ฉด) ํ๋Š” empty ์ƒํƒœ์ด๋‹ค.

 

4. ๋ฐฐ์—ด์„ ์ด์šฉํ•œ ํ์˜ ๊ตฌํ˜„

๋‹ค์Œ์€ C์–ธ์–ด๋กœ ๊ตฌํ˜„ํ•œ intํ˜• ํ์ด๋‹ค.

 

4-1. ํ์˜ ์ƒ์„ฑ

1
2
3
4
5
#define QUEUE_SIZE 5
typedef int element;
element queue[QUEUE_SIZE];
int front = -1;
int rear = -1;
cs

1๋ผ์ธ: ํ์˜ ์‚ฌ์ด์ฆˆ๋ฅผ 5๋กœ ์ •์˜ํ•œ๋‹ค.

2๋ผ์ธ: ํ์˜ element๋ฅผ intํ˜•์œผ๋กœ ์ •์˜ํ•œ๋‹ค.

3๋ผ์ธ: element๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ๋ฅผ QUEUE_SIZE๋งŒํผ ํ• ๋‹น๋ฐ›๋Š”๋‹ค.

4,5๋ผ์ธ: front์™€ rear๋ฅผ -1๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

 

4-2. ํ์˜ ์‚ฝ์ž…

์‚ฝ์ž… ์ „ ํ์˜ ์ดˆ๊ธฐ ์ƒํƒœ ์˜ˆ์‹œ

๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์‚ฝ์ž… ์—ฐ์‚ฐ์ด ๋ฐœ์ƒํ•˜๋ฉด rear ๋ณ€์ˆ˜๋งŒ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™(์ฆ๊ฐ€)ํ•œ๋‹ค.

 

1
2
3
4
5
6
7
8
9
void addQueue(int *rear, element item) {
    if(*rear == QUEUE_SIZE-1) {
        printf("Queue is Full\n");
        return;
    }
 
    queue[++(*rear)] = item;
    return;
}
cs

1๋ผ์ธ: rear ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๊ฐ’๊ณผ ์‚ฝ์ž…ํ•  ๋ฐ์ดํ„ฐ๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•œ๋‹ค.

2๋ผ์ธ: if(*rear == QUEUE_SIZE-1)

ํŽธ์˜์ƒ *rear ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ํ๊ฐ€ ๋งŒ์› ์ƒํƒœ(full)์ธ์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค. ๋งŒ์› ์ƒํƒœ์ด๋ฉด ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์ข…๋ฃŒํ•œ๋‹ค.

7๋ผ์ธ: queue[++(*rear)= item;

ํ๊ฐ€ ๋งŒ์› ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๋ฉด *rear๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚ค๊ณ  queue์˜ ํ•ด๋‹น ์ธ๋ฑ์Šค์— item์„ ์ €์žฅํ•œ๋‹ค.(์ˆœ์„œ ์ค‘์š”)

 

์‚ฝ์ž… ์—ฐ์‚ฐ์œผ๋กœ 400์„ ์ €์žฅํ•œ ๊ฒฐ๊ณผ

4-3. ํ์˜ ์‚ญ์ œ

์‚ญ์ œ ์—ฐ์‚ฐ์ด ๋ฐœ์ƒํ•˜๋ฉด front ๋ณ€์ˆ˜๋งŒ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™(์ฆ๊ฐ€)ํ•œ๋‹ค.

 

1
2
3
4
5
6
7
8
element deleteQueue(int *frontint rear) {
    if(*front == rear) {
        print("Queue is Empty\n");
        return;
    }
 
    return (queue[++(*front)]);
}
cs

1๋ผ์ธ: front ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๊ฐ’๊ณผ rear ๋ณ€์ˆ˜๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•œ๋‹ค.

2๋ผ์ธ: if(*front == rear)

front์™€ rear๋ฅผ ๋น„๊ตํ•ด ํ๊ฐ€ ๋นˆ ์ƒํƒœ(empty)์ธ์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค. front์™€ rear๊ฐ€ ๊ฐ™์œผ๋ฉด ๋นˆ ์ƒํƒœ์ด๋‹ค. ๋นˆ ์ƒํƒœ์ด๋ฉด ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์ข…๋ฃŒํ•œ๋‹ค.

7๋ผ์ธ: return (queue[++(*front)]);

ํ๊ฐ€ ๋นˆ ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๋ฉด *front๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚ค๊ณ  queue์˜ ํ•ด๋‹น ์ธ๋ฑ์Šค์— ์žˆ๋Š” element๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.(์ˆœ์„œ ์ค‘์š”)

 

์‚ญ์ œ ์—ฐ์‚ฐ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ

 

5. ํ์˜ ์‘์šฉ ๋ถ„์•ผ

FCFS ์Šค์ผ€์ค„๋ง ๊ธฐ๋ฒ•์˜ ์˜ˆ

 

RR ์Šค์ผ€์ค„๋ง ๊ธฐ๋ฒ•์˜ ์˜ˆ

- ํ๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ CPU์˜ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•์— ํ™œ์šฉ๋œ๋‹ค.

- FCFS(First Com First Served) ์Šค์ผ€์ค„๋ง ๊ธฐ๋ฒ• : FIFO(First In First Out) ์Šค์ผ€์ค„๋ง์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค. ์ž‘์—…(ํ”„๋กœ๊ทธ๋žจ)์ด ์ค€๋น„ ํ์— ๋„์ฐฉํ•œ ์ˆœ์„œ๋Œ€๋กœ CPU๋ฅผ ํ• ๋‹น๋ฐ›๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.

- RR(Round Robin) ์Šค์ผ€์ค„๋ง ๊ธฐ๋ฒ• : ๋Œ€ํ™”ํ˜• ์‹œ์Šคํ…œ์— ์‚ฌ์šฉ๋˜๋Š” ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์ด๋‹ค. ๋„์ฐฉํ•œ ์ˆœ์„œ๋Œ€๋กœ CPU๊ฐ€ ํ• ๋‹น๋˜์ง€๋งŒ CPU์˜ ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰ ๋˜๋Š” ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์— ์˜ํ•ด ์ œํ•œ์„ ๋ฐ›๋Š”๋‹ค. ์ผ์ •ํ•œ ํฌ๊ธฐ์˜ ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰์„ ๋ชจ๋“  ์ž‘์—…์— ์ฃผ๊ณ  ๊ทธ ์‹œ๊ฐ„ ๋™์•ˆ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์ง€ ๋ชปํ•˜๋ฉด ์ค€๋น„ ํ์˜ ๋งจ ๋’ค์— ๋‹ค์‹œ ๋ฐฐ์น˜ํ•œ๋‹ค.

 

6. ์›ํ˜• ํ(Circular Queue)

ํ๊ฐ€ ๋งŒ์› ์ƒํƒœ(full)์ด๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ 100% ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ

  ๋ฐฐ์—ด๋กœ ๊ตฌํ˜„๋œ ์‚ฌ์ด์ฆˆ 5์งœ๋ฆฌ ํ์ด๋ฉฐ 5๊ฐœ์˜ element๊ฐ€ ๋ชจ๋‘ ์ฑ„์›Œ์ง„ ๊ฒฝ์šฐ์ด๋‹ค. ์ฆ‰ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ 100% ์‚ฌ์šฉํ•œ๋‹ค.

 

ํ์— ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•œ ์˜ˆ

  100๊ณผ 200์ด ์‚ญ์ œ๋˜์–ด ํ์— element๊ฐ€ ๋ชจ๋‘ ์ฑ„์›Œ์ง€์ง€ ์•Š์•˜์ง€๋งŒ ์ถ”๊ฐ€ element ์‚ฝ์ž…์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ฐฐ์—ด๋กœ ๊ตฌํ˜„๋œ ํ๋Š” ์ •์˜๋œ ๋ฐฐ์—ด์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๋ณ€ํ™”์‹œํ‚ฌ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. queue[4]๊ฐ€ ๋งˆ์ง€๋ง‰ ๊ณต๊ฐ„์ด๊ณ  rear๊ฐ€ ๋” ์ด์ƒ ์•ž์œผ๋กœ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์—†๋‹ค. element๊ฐ€ ์‚ฝ์ž…๋  ๋•Œ๋งˆ๋‹ค rear๋Š” 1์”ฉ ์ฆ๊ฐ€๋œ๋‹ค. ํ์˜ ํฌ๊ธฐ๊ฐ€ n์ด๋ฉด n-1์˜ ์œ„์น˜๊นŒ์ง€ ์˜ค๊ณ  ๋”์ด์ƒ ์ €์žฅํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์œ„ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ํ์— ์ €์žฅ๋œ element๋Š” n๊ฐœ๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ๋‹ค.

  ์•ž์„œ ์ •์˜ํ•œ ํ์˜ ์ถ”์ƒ ์ž๋ฃŒํ˜•์—์„œ๋„ 'ํ์˜ element ๊ฐœ์ˆ˜ == maxQueueSize'๋ฅผ ํ์˜ ๋งŒ์› ์ƒํƒœ๋กœ ์ •์˜ํ•˜๊ณ  ์žˆ๋‹ค. ์ฆ‰ rear๊ฐ’์œผ๋กœ ํ์˜ ๋งŒ์› ์ƒํƒœ๋ฅผ ๊ฒฐ์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค.(๋ฐฐ์—ด์„ ์ด์šฉํ•ด ๊ตฌํ˜„ํ•œ ํ์—์„œ๋Š” ํŽธ์˜์ƒ rear๊ฐ’์œผ๋กœ ํŒ๋‹จํ•จ) ์ด ๋•Œ๋ฌธ์— front๋ถ€ํ„ฐ ์ด์ „์˜ ๋นˆ ๊ณต๊ฐ„์— ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋Š” ํ๋ฅผ ๋ฐฐ์—ด๋กœ ๊ตฌํ˜„ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ ์ด๋‹ค.

 

์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์›ํ˜• ํ๊ฐ€ ์ œ์•ˆ๋˜์—ˆ๋‹ค.

 

์›ํ˜• ํ๋Š” ํŒŒ์ดํ”„์˜ ์ž…๊ตฌ์™€ ์ถœ๊ตฌ๋ฅผ ์—ฐ๊ฒฐ์‹œํ‚จ ํ˜•ํƒœ์ด๋‹ค.

 

ํ์™€ ์›ํ˜• ํ

์•ž์„œ ๋ณธ ํ์™€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋ผ์žˆ๋Š” ์›ํ˜• ํ์ด๋‹ค. ๋‘˜ ๋‹ค rear๊ฐ’์ด n-1์ธ ์ƒํ™ฉ์ด๋‹ค. '600'์„ ์‚ฝ์ž…ํ•˜๋ ค ์‹œ๋„ํ•˜๋ฉด ๋ฐฐ์—ด๋กœ ๊ตฌํ˜„๋œ ์ผ๋ฐ˜ ํ์—๋Š” ๋” ์ด์ƒ ์‚ฝ์ž…์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์›ํ˜• ํ์—์„œ๋Š” ์‚ฝ์ž…์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

์›ํ˜• ํ์˜ ์‚ฝ์ž… ๊ฒฐ๊ณผ

  ์›ํ˜• ํ๋Š” ๊ณต๊ฐ„์„ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ํ™œ์šฉ๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด near์˜ ์œ„์น˜๊ฐ€ n-1์ผ ๋•Œ ์‚ฝ์ž…์ด ๋ฐœ์ƒํ•˜๋ฉด rear๋ฅผ 0์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค.

 

๋‚˜๋จธ์ง€๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” mod(modulus) ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ rear๊ฐ’์„ ๊ด€๋ฆฌํ•œ๋‹ค.
์›ํ˜• ํ์— element๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ 'rear ← (rear + 1) mod n' ํ˜น์€ 'front ← (front + 1) mod n' ์—ฐ์‚ฐ์‹์„ ์ด์šฉํ•œ๋‹ค.

์˜ˆ:
โ‘  ๋ฐฐ์—ด๋กœ ๊ตฌํ˜„๋œ ์‚ฌ์ด์ฆˆ 5 ์›ํ˜• ํ์˜ rear๊ฐ€ 3์ธ ์ƒํƒœ์—์„œ ์‚ฝ์ž…์ด ๋ฐœ์ƒํ•œ๋‹ค.
โ‘ก '(3+1) mod 5'์˜ ๊ฒฐ๊ณผ์ธ 4๋ฅผ rear ๊ฐ’์œผ๋กœ ๊ฐ–๋Š”๋‹ค. → rear = n-1
โ‘ข ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.
โ‘ฃ ๋‹ค์‹œ ์‚ฝ์ž…์ด ๋ฐœ์ƒํ•œ๋‹ค.
โ‘ค '(4+1) mod 5'์˜ ๊ฒฐ๊ณผ์ธ 0์„ rear ๊ฐ’์œผ๋กœ ๊ฐ–๋Š”๋‹ค. → rear = 0

 

7. ์—ฐ์Šต๋ฌธ์ œ

1. ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์œ ํ˜• ์ค‘ ์„ ํ˜• ๊ตฌ์กฐ์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ธ๊ฐ€?
โ‘  ํ
โ‘ก ๊ทธ๋ž˜ํ”„
โ‘ข ํŠธ๋ฆฌ
โ‘ฃ ํžข

2. ํ์—์„œ element๋ฅผ ์‚ฝ์ž…ํ•  ๊ฒฝ์šฐ์˜ ์„ค๋ช…์œผ๋กœ ๋งž๋Š” ๊ฒƒ์€?
โ‘  rear์˜ ์œ„์น˜๋ฅผ ๊ฐ์†Œ์‹œํ‚จ ํ›„ element๋ฅผ ์‚ฝ์ž…
โ‘ก front์˜ ์œ„์น˜๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ ํ›„ element๋ฅผ ์‚ฝ์ž…
โ‘ข rear์˜ ์œ„์น˜๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ ํ›„ element๋ฅผ ์‚ฝ์ž…
โ‘ฃ front์˜ ์œ„์น˜๋ฅผ ๊ฐ์†Œ์‹œํ‚จ ํ›„ element๋ฅผ ์‚ฝ์ž…

3. ๋‹ค์Œ์€ ํ์— ์›์†Œ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. (๊ฐ€)์™€ (๋‚˜)์— ์•Œ๋งž์€ ๊ฒƒ์€?
โ‘  (๊ฐ€) *rear == QUEUE_SIZE, (๋‚˜) (*rear)++
โ‘ก (๊ฐ€) *rear == QUEUE_SIZE, (๋‚˜) ++(*rear)
โ‘ข (๊ฐ€) *rear == QUEUE_SIZE-1, (๋‚˜) ++(*rear)
โ‘ฃ (๊ฐ€) *rear == QUEUE_SIZE-1, (๋‚˜) (*rear)++

4. ํŒŒ์ดํ”„์˜ ์ž…๊ตฌ์™€ ์ถœ๊ตฌ๋ฅผ ์—ฐ๊ฒฐ์‹œํ‚จ ํ˜•ํƒœ์˜ ํ๋กœ ๊ธฐ์–ต์žฅ์†Œ์˜ ๋‚ญ๋น„๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๋ฌด์—‡์ธ๊ฐ€?
โ‘  ์—ฐ๊ฒฐ ํ
โ‘ก ์ด์ค‘ ํ
โ‘ข ์›ํ˜• ํ
โ‘ฃ ๋ฐ ํ

5. ๋‹ค์Œ ํ์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ํ‹€๋ฆฐ ๊ฒƒ์„ ๋ชจ๋‘ ๊ณ ๋ฅด์‹œ์˜ค.
โ‘  ์›ํ˜• ํ๋Š” ์ž…๊ตฌ(rear ๋ณ€์ˆ˜)์™€ ์ถœ๊ตฌ(front ๋ณ€์ˆ˜)๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„์„ ์—ฐ์†์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ œ์•ˆ๋˜์—ˆ๋‹ค.
โ‘ก ํ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋ถ€๋ถ„์—์„œ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” FIFO ํŠน์„ฑ์„ ๊ฐ–๋Š” ์ˆœ์„œ ๋ฆฌ์ŠคํŠธ์ด๋‹ค.
โ‘ข ํ๊ฐ€ ๊ฐ€๋“ ์ฐฌ ์ƒํƒœ๋Š” ์‚ฝ์ž…๋˜๋Š” ๋ถ€๋ถ„์˜ rear ๋ณ€์ˆ˜์™€ ์‚ญ์ œ๋˜๋Š” ๋ถ€๋ถ„์˜ front ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
โ‘ฃ ์‚ฝ์ž…๋˜๋Š” ๋ถ€๋ถ„์˜ rear ๋ณ€์ˆ˜๊ฐ€ ๋งˆ์ง€๋ง‰์„ ๊ฐ€๋ฆฌํ‚ค๋ฉด ํ์— ํฌํ•จ๋œ ์›์†Œ์˜ ๊ฐฏ์ˆ˜๋Š” ํ์˜ ํฌ๊ธฐ์™€ ๊ฐ™๊ณ  ํ๊ฐ€ ๊ฐ€๋“ ์ฐฌ ์ƒํƒœ์ด๋‹ค.

6. ํ์˜ ์šด์šฉ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์šด์˜๋˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๊ฒƒ์€ ๋ฌด์—‡์ธ๊ฐ€?
โ‘  ๋ฌธ์„œ ์ถœ๋ ฅ์„ ์œ„ํ•ด ํ”„๋ฆฐํ„ฐ๊ธฐ๋ฅผ ์ด์šฉํ•  ๋•Œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์„œ๋ฅผ ์ถœ๋ ฅํ•ด๋„ ๋จผ์ € ์ธ์‡„๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ ๋ฌธ์„œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ ์ถœ๋ ฅ๋œ๋‹ค.
โ‘ก ์€ํ–‰์—์„œ ๋ฒˆํ˜ธํ‘œ๋ฅผ ๋ฝ‘๊ณ  ์ฐฝ๊ตฌ์— ๊ฐ€๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
โ‘ข ํƒ์‹œ ์Šน๊ฐ•์žฅ์— ์ค„์„ ์„œ์„œ ํƒ์‹œ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
โ‘ฃ ์›น๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐฉ๊ธˆ ์ „ ๋ฐฉ๋ฌธํ–ˆ๋˜ ์‚ฌ์ดํŠธ ๊ธฐ๋ก ์ €์žฅ ํ›„ '์ด์ „ ํŽ˜์ด์ง€๋กœ ๋Œ์•„๊ฐ€๊ธฐ'๋ฅผ ํด๋ฆญํ•œ๋‹ค.

7. ๋‹ค์Œ์€ ํ์— ๋Œ€ํ•œ ์—ฐ์‚ฐ์ด๋‹ค. โ‘ง ์—ฐ์‚ฐ ์ˆ˜ํ–‰ ํ›„ ํ์˜ ๋ชจ์Šต์€ ๋ฌด์—‡์ธ๊ฐ€?

 

์ •๋‹ต โ–ผ

๋”๋ณด๊ธฐ

1 : โ‘ 
2 : โ‘ข
3 : โ‘ข
4 : โ‘ข
5 : โ‘ข,โ‘ฃ
6 : โ‘ฃ
7 : โ‘ฃ

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€