문제
정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
명령은 총 여섯 가지이다.
- push X: 정수 X를 큐에 넣는 연산이다.
- pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- size: 큐에 들어있는 정수의 개수를 출력한다.
- empty: 큐가 비어있으면 1, 아니면 0을 출력한다.
- front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
입력
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘쨰 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다.
출력
출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.
예제 입력
15
push 1
push 2
front
back
size
empty
pop
pop
pop
size
empty
pop
push 3
empty
front
예제 출력
1
2
2
0
1
2
-1
0
1
-1
0
3
[코드]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int N = sc.nextInt(); Queue queue = new Queue(); for (int i = 0; i < N; i++) { String cmd = sc.next(); switch (cmd) { case "push": { queue.push(sc.nextInt()); break; } case "pop": { queue.pop(); break; } case "front": { queue.front(); break; } case "back": { queue.back(); break; } case "empty": { queue.empty(); break; } case "size": { queue.size(); break; } } } } } class Queue { static int q[] = new int[10001]; int start = 0; int end = 0; public void push(int x) { q[end] = x; end++; } public void pop() { if (end == 0) System.out.println(-1); else { int pop = q[start]; for (int i = 1; i < end; i++) q[i - 1] = q[i]; q[end - 1] = 0; end--; System.out.println(pop); } } public void front() { if (end == 0) System.out.println(-1); else System.out.println(q[start]); } public void back() { if (end == 0) System.out.println(-1); else System.out.println(q[end - 1]); } public void empty() { if (end == 0) System.out.println(1); else System.out.println(0); } public void size() { System.out.println(end); } } | cs |
[알고리즘]
그냥 Queue 클래스로 한번 짜봤음
'공부 > 알고리즘' 카테고리의 다른 글
백준2252_줄 세우기 (0) | 2016.11.08 |
---|---|
백준1620_나는야 포켓몬 마스터 이다솜 (1) | 2016.11.04 |
백준1991_트리 (1) | 2016.11.02 |
백준5397_키로거 (2) | 2016.10.31 |
백준2493_탑 (1) | 2016.10.28 |
댓글