반응형
문제
정수를 저장하는 덱(Deque)을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
명령은 총 여덟 가지이다.
- push_front X: 정수 X를 덱의 앞에 넣는다.
- push_back X: 정수 X를 덱의 뒤에 넣는다.
- pop_front: 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- pop_back: 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- size: 덱에 들어있는 정수의 개수를 출력한다.
- empty: 덱이 비어있으면 1을, 아니면 0을 출력한다.
- front: 덱의 가장 앞에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- back: 덱의 가장 뒤에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
입력
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다.
출력
출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.
테스트 케이스
접근
하나의 수를 입력받고, 그 수만큼 명령어를 입력받아 수행하는 문제입니다.
명령어가 총 여덟 가지로 각각을 구현해주면 됩니다.
저 같은 경우 자바 deque 클래스를 이용해서 쉽게 문제를 해결하였습니다.
코드
import java.awt.desktop.SystemEventListener;
import java.io.*;
import java.math.*;
import java.util.*;
public class Main {
/*
16165 problem
*/
public static void main(String[] args) throws NumberFormatException, IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
Deque<Integer> dq = new ArrayDeque<>();
int input = Integer.parseInt(br.readLine());
int num =0;
for(int i=0; i<input; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String command = st.nextToken();
//push_back
if(command.equals("push_back")) {
num = Integer.parseInt(st.nextToken());
dq.addLast(num);
}
//push_front
else if(command.equals("push_front")) {
num = Integer.parseInt(st.nextToken());
dq.addFirst(num);
}
//pop_front
else if(command.equals("pop_front")){
if(dq.isEmpty()) {
System.out.println(-1);
continue;
}
System.out.println(dq.removeFirst());
}
//pop_back
else if(command.equals("pop_back")) {
if(dq.isEmpty()) {
System.out.println(-1);
continue;
}
System.out.println(dq.removeLast());
}
//size
else if(command.equals("size")) {
System.out.println(dq.size());
}
//empty
else if(command.equals("empty")) {
if(dq.isEmpty()) {
//System.out.println(dq.isEmpty());
System.out.println(1);
}
else {
System.out.println(0);
}
}
//front
else if(command.equals("front")) {
if(dq.isEmpty()) {
System.out.println(-1);
continue;
}
System.out.println(dq.getFirst());
}
//back
else if(command.equals("back")) {
if(dq.isEmpty()) {
System.out.println(-1);
continue;
}
System.out.println(dq.getLast());
}
}
bw.flush();
bw.close();
}
}
주의
x
반응형
'공부 정리 > 백준' 카테고리의 다른 글
[백준] 자바 11726 2 x n 타일링 (0) | 2021.07.20 |
---|---|
[백준] 자바 9095 1, 2, 3 더하기 (0) | 2021.07.19 |
[백준] 자바 16165 걸그룹 마스터 준석이 (0) | 2021.07.16 |
[백준] 자바 4358 생태학 (0) | 2021.07.15 |
[백준] 자바 1269 대칭 차집합 (0) | 2021.07.14 |
댓글