시간 & 메모리 제한
문제
입력 & 출력
자료구조를 구현하는 문제풀이
package com.Back;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;
public class Back_10845 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int TestCase = Integer.parseInt(br.readLine());
Deque<Integer> qu = new ArrayDeque<Integer>();
StringBuilder output = new StringBuilder();
for(int tc = 0 ; tc < TestCase; tc++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String command =st.nextToken();
int input =0;
if(command.equals("push")) {
input = Integer.parseInt(st.nextToken());
}
switch (command) {
case "push":
qu.offer(input);
break;
case "pop":
if(qu.size()==0) {
output.append("-1\n");
break;
}
output.append(qu.poll()+"\n");
break;
case "size":
output.append(qu.size()+"\n");
break;
case "empty":
if(qu.size()==0) {
output.append("1\n");
}else {
output.append("0\n");
}
break;
case "front":
if(qu.size()==0) {
output.append("-1\n");
break;
}
output.append(qu.getFirst()+"\n");
break;
case "back":
if(qu.size()==0) {
output.append("-1\n");
break;
}
output.append(qu.getLast()+"\n");
break;
}
}
System.out.println(output);
}
}
- 이 문제는 Queue에 대한 메소드를 구현해보는 문제입니다.
- push , pop, size , empty, front , back 의 기능을 알고 있으면 좀 더 쉽게 풀 수 있을것입니다.
- 문제 해결은 switch문을 이용해서 문제를 해결 했습니다.
- 저는 큐도 좋지만 데크를 이용이 좀 편해서 데크를 이용했습니다.
- 큐와 데크의 차이는 큐는 선입선출(FIFO) 구조 이지만 데크는 앞 뒤로 다 넣고 뺄 수 있습니다.
'Algorithm > 백준 알고리즘' 카테고리의 다른 글
백준_16926 배열 돌리기1(자바) (0) | 2021.04.03 |
---|---|
백준_1946 신입 사원(자바) / 그리디 알고리즘 (0) | 2021.04.02 |
백준_10844 쉬운 계단 수(자바) / DP (0) | 2021.04.01 |
백준_2468 안전 영역(자바) / DFS (0) | 2021.04.01 |
백준_10026 적록색약(자바) / DFS (0) | 2021.03.31 |