문제
백준 10845 [큐]
문제 링크: https://www.acmicpc.net/problem/10845
해결 방법
- LinkedList로 큐를 생성
- 각 입력 값에 일치하는 연산 구현
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
Queue<Integer> queue = new LinkedList<>();
int lastElement = -1; // 큐의 마지막 요소를 기록하기 위해 사용
int N = Integer.parseInt(br.readLine()); // 명령어의 수
for (int i = 0; i < N; i++) {
String command = br.readLine();
if (command.startsWith("push")) {
int value = Integer.parseInt(command.split(" ")[1]);
queue.offer(value);
lastElement = value; // 마지막 요소를 업데이트
} else if (command.equals("pop")) {
if (queue.isEmpty()) {
sb.append("-1\n");
} else {
sb.append(queue.poll()).append("\n");
}
} else if (command.equals("size")) {
sb.append(queue.size()).append("\n");
} else if (command.equals("empty")) {
sb.append(queue.isEmpty() ? "1\n" : "0\n");
} else if (command.equals("front")) {
if (queue.isEmpty()) {
sb.append("-1\n");
} else {
sb.append(queue.peek()).append("\n");
}
} else if (command.equals("back")) {
if (queue.isEmpty()) {
sb.append("-1\n");
} else {
sb.append(lastElement).append("\n");
}
}
}
System.out.print(sb.toString());
}
}
- 참고할 다른 풀이 방법
더보기
switch-case문
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 void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
Queue<Integer> que = new LinkedList<Integer>();
int last = 0;
for(int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String S = st.nextToken();
switch(S) {
case "push" :
last = Integer.parseInt(st.nextToken());
que.offer(last);
break;
case "pop" :
if(que.isEmpty()) sb.append(-1).append("\n");
else sb.append(que.poll()).append("\n");
break;
case "size" :
sb.append(que.size()).append("\n");
break;
case "empty" :
if(que.isEmpty()) sb.append(1).append("\n");
else sb.append(0).append("\n");
break;
case "front" :
if(que.isEmpty()) sb.append(-1).append("\n");
else sb.append(que.peek()).append("\n");
break;
case "back" :
if(que.isEmpty()) sb.append(-1).append("\n");
else sb.append(last).append("\n");
break;
}
}
System.out.println(sb);
}
}
import java.util.*;
import java.lang.*;
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int line = Integer.parseInt(br.readLine());
Queue<String> queue = new LinkedList<>();
String last = null;
for(int i=0; i<line; i++) {
String[] cmd = br.readLine().split(" ");
switch (cmd[0]) {
case "push":
queue.offer(cmd[1]);
last = cmd[1];
break;
case "pop":
bw.write(queue.isEmpty() ? "-1" : queue.poll());
bw.newLine();
break;
case "size":
bw.write(String.valueOf(queue.size()));
bw.newLine();
break;
case "empty":
bw.write(queue.isEmpty() ? "1" : "0");
bw.newLine();
break;
case "front":
bw.write(queue.isEmpty() ? "-1" : queue.peek());
bw.newLine();
break;
case "back":
bw.write(queue.isEmpty() ? "-1" : last);
bw.newLine();
break;
}
}
br.close();
bw.close();
}
}