0%

[백준/10866] 덱

Baekjoon Online Judge - 10866

Review

  • 이전에 풀었던 큐 문제를 수정해서 푼 문제.
  • 맞게 푼 것 같은데 push_back()을 여러 번 반복할 때 제대로 출력이 되지 않음.
  • 뭐 놓친 거 있나 싶어서 구글링 했는데 맞게 짠 것 같아서 당황… ㅡㅡ;;
  • 맞왜틀의 늪에 빠져 이것저것 고쳐봤는데 알고 보니 또 입출력 문제였음.
  • Scanner 사용하니 제대로 출력이 된다.

Code (JAVA)

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
97
98
99
100
101
102
103
104
105
106
107
108
import java.util.*;

public class Main {
public static void main(String args[]){

Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
Deque deque = new Deque(n);
for(int i=0;i<n;i++){
String s=sc.next();
if(s.equals("push_front")){
int tmp=sc.nextInt();
deque.push_front(tmp);
}
else if(s.equals("push_back")){
int tmp=sc.nextInt();
deque.push_back(tmp);
}
else if(s.equals("pop_front"))
System.out.println(deque.pop_front());
else if(s.equals("pop_back"))
System.out.println(deque.pop_back());
else if(s.equals("size"))
System.out.println(deque.size());
else if(s.equals("empty"))
System.out.println(deque.empty());
else if(s.equals("front"))
System.out.println(deque.front());
else if(s.equals("back"))
System.out.println(deque.back());
}

sc.close();
}

static class Deque {
private int[] array;
private int rear;
private int item;

public Deque(int size) {
rear = -1;
array = new int[size];
}

public void push_front(int item) {
rear++;
for(int i = rear; i > 0; i--) {
array[i] = array[i-1];
}
array[0] = item;
}

public void push_back(int item) {
rear++;
array[rear] = item;
}

public int pop_front() {
if (rear==-1) {
return -1;
} else {
item = array[0];
for (int i = 0; i < rear; i++) {
array[i] = array[i+1];
}
rear--;
return item;
}
}

public int pop_back() {
if (rear==-1) {
return -1;
} else {
item = array[rear];
rear--;
return item;
}
}

public int size() {
return rear+1;
}

public int empty() {
if(rear==-1) {
return 1;
} else {
return 0;
}
}

public int front() {
if(rear==-1) {
return -1;
}
return array[0];
}

public int back() {
if(rear==-1) {
return -1;
}
return array[rear];
}
}
}