백준 10866 덱 java
https://www.acmicpc.net/problem/10866
import java.io.IOException;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.NoSuchElementException;
import java.util.Scanner;
//뭐가 문제인지를 모르겠는 풀이
public class Main {
public static void main(String[] args) throws NoSuchElementException {
ArrayDeque<Integer> deque = new ArrayDeque<Integer>();
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int insert = 0;
for(int i =0; i <N ; i++) {
String order = sc.next();
switch(order) {
case "push_front":
int x = sc.nextInt();
insert = x;
deque.addFirst(x);
break;
case "push_back":
int x2 = sc.nextInt();
insert = x2;
deque.addLast(x2);
break;
case "pop_front":
if(deque.isEmpty()) {
System.out.println(-1);
}
System.out.println(deque.pollFirst());
break;
case "pop_back":
if(deque.isEmpty()) {
System.out.println(-1);
}
System.out.println(deque.pollLast());
break;
case "size":
System.out.println(deque.size());
break;
case "empty":
if(deque.isEmpty()==true) {
System.out.println(1);
}else {
System.out.println(0);
}
break;
case "front":
if(deque.isEmpty()==true) {
System.out.println(-1);
}else {
System.out.println(deque.peekFirst());
} // getFirst 와는 뭐가 다르지 ?
break;
case "back":
if(deque.isEmpty()==true) {
System.out.println(-1);
}else {
System.out.println(deque.peekLast());
}
break;
}
}
}
}
위의 코드는 내가 풀어 본 코드인데
예제
15
push_back 1
push_front 2
front
back
size
empty
pop_front
pop_back
pop_front
size
empty
pop_back
push_front 3
empty
front
을 입력시
2
1
2
0
2
1
-1
0
1
-1
0
3
가 출력되는 것이 아니라
size 부분에서 null 이 출력이 된다.
정수로 길이가 출력되어야하니 0 이 나와야하는데 ... 이유를 생각해 봐도 모르겠다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.NoSuchElementException;
import java.util.Scanner;
//뭐가 문제인지를 모르겠는 풀이
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
ArrayDeque<Integer> deque = new ArrayDeque<Integer>();
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
for (int i = 0; i < N; i++) {
String[] s = br.readLine().split(" ");
switch (s[0]) {
case "push_front":
deque.addFirst(Integer.parseInt(s[1])); // 이 부분이 이해가 안감
break;
case "push_back":
deque.addLast(Integer.parseInt(s[1]));
break;
case "pop_front":
if (deque.isEmpty()) {
sb.append(-1).append('\n');
} else {
sb.append(deque.pollFirst()).append('\n');
}
break;
case "pop_back":
if (deque.isEmpty()) {
sb.append(-1).append('\n');
} else {
sb.append(deque.pollLast()).append('\n');
}
break;
case "size":
sb.append(deque.size()).append('\n');
break;
case "empty":
if (deque.isEmpty()) {
sb.append(1).append('\n');
} else {
sb.append(0).append('\n');
}
break;
case "front":
if (deque.isEmpty()) {
sb.append(-1).append('\n');
} else {
sb.append(deque.peekFirst()).append('\n');
}
break;
case "back":
if (deque.isEmpty()) {
sb.append(-1).append('\n');
} else {
sb.append(deque.peekLast()).append('\n');
}
break;
}
}
System.out.println(sb);
}
}
다른 분이 푼 위의 코드는 정상 작동한다.
이유를 더 알아보아야겠다.
Author And Source
이 문제에 관하여(백준 10866 덱 java), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gloriousmin77/백준-10866-덱-java저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)