https://www.acmicpc.net/problem/18258
코드설명
큐 자료구조 문제입니다.
문제의 로직대로 구현하면되는데,
이떄 back 명령어일경우, lastWord라는 변수에 push를 할때마다 계속해서 갱신해주어 마지막에 넣은 단어를 저장해나갑니다.
또한 시간초과가 날 수 있으므로 Stringbuilder를 활용하여 입출력 시간을 감소시킵니다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
public static int N;
public static Queue<Integer> q = new LinkedList<>();
public static StringBuilder sb = new StringBuilder();
public static int answer = 0;
public static int lastWord = -1;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
for(int i=0;i<N;i++) {
st = new StringTokenizer(br.readLine());
String command = st.nextToken();
if(command.equals("push")) {
int x = Integer.parseInt(st.nextToken());
lastWord = x;
q.add(x);
}
else if(command.equals("front")) {
if(q.isEmpty()) {
sb.append(-1).append('\n');
// System.out.println("-1");
}else {
sb.append(q.peek()).append('\n');
// System.out.println(q.peek());
}
}
else if(command.equals("back")) {
if(q.isEmpty()) {
sb.append(-1).append('\n');
// System.out.println("-1");
}else {
sb.append(lastWord).append('\n');
// System.out.println(lastWord);
}
}
else if(command.equals("size")) {
// System.out.println(q.size());
sb.append(q.size()).append('\n');
}
else if(command.equals("empty")) {
if(q.isEmpty()) {
sb.append(1).append('\n');
// System.out.println(1);
}else {
sb.append(0).append('\n');
// System.out.println(0);
}
}
else if(command.equals("pop")) {
if(q.isEmpty()) {
sb.append(-1).append('\n');
// System.out.println("-1");
}else {
sb.append(q.poll()).append('\n');
// System.out.println(q.poll());
}
}
}
System.out.println(sb.toString());
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2164 카드2 - 큐 + 자료구조 JAVA (0) | 2023.09.02 |
---|---|
[백준] 1158 요세푸스 문제 - 큐 + 자료구조 JAVA (0) | 2023.09.02 |
[백준] 9012 괄호 - 스택 + 자료구조 JAVA (0) | 2023.09.02 |
[백준] 10828 스택 - 스택 + 자료구조 JAVA (0) | 2023.09.02 |
[백준] 12851 숨바꼭질 2 - BFS JAVA (0) | 2023.09.01 |