# 큐: 삭제(dequeue) 구현
## 문제
주어진 뼈대코드에 `dequeue()` 메소드를 구현하고, 그 결과를 출력 예와 비교하시오.
## 동작흐름
<div class="embed-responsive embed-responsive-16by9">
<iframe src="https://www.youtube.com/embed/jjtAA2J1Ik0" frameborder="0" allowfullscreen></iframe>
</div>
## 출력 예
```
---------------
1 2 3 4 5
---------------
[0][1][2][3][4]
front: [0], rear: [4], isEmpty?: false, isFull?: true
1
2
3
4
5
---------------
ø ø ø ø ø
---------------
[0][1][2][3][4]
front: [5], rear: [4], isEmpty?: true, isFull?: false
```
## 뼈대코드
```
public class MyQueueTest {
public static void main(String[] args) {
MyQueue queue = new MyQueue();
int data = 1;
while (!queue.isFull()) {
queue.enqueue(data++);
}
System.out.println(queue);
while (!queue.isEmpty()) {
System.out.println(queue.dequeue());
}
System.out.println(queue);
}
}
class MyQueue {
private int[] elements;
private int capacity;
private int front; // 꺼내올 요소의 인덱스
private int rear; // 마지막 추가 요소의 인덱스
private int size; // 요소 개수
public MyQueue() {
this.elements = new int[5];
this.capacity = 5;
this.front = 0;
this.rear = 0;
this.size = 0;
}
public int dequeue() {
/* 해당 메소드를 구현하시오. */
return -1;
}
public void enqueue(int data) {
if (isEmpty()) // size == 0
elements[rear] = data;
else
elements[++rear] = data;
size++;
}
public boolean isEmpty() {
return size == 0;
}
public boolean isFull() {
return size == capacity;
}
@Override
public String toString() {
StringBuffer sbuf = new StringBuffer("---------------\n");
for (int i = 0; i < capacity; i++) {
if (i >= front && i <= rear && !isEmpty())
sbuf.append(String.format("%2d ", elements[i]));
else
sbuf.append(String.format("%2s ", "ø"));
}
sbuf.append("\n---------------\n");
sbuf.append("[0][1][2][3][4]\n\n");
sbuf.append(String.format("front: [%d], rear: [%d], isEmpty?: %s, isFull?: %s", front, rear, isEmpty(), isFull()));
return sbuf.toString();
}
}
```