Computer Science (CS)/알고리즘
[백준/Java] 10845번 큐
eune7
2024. 11. 18. 00:28
728x90
반응형
문제
정답
import java.io.*;
import java.util.*;
public class Main {
static Queue<Integer> resultQueue = new LinkedList<>();
static int lastNum;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
for(int i = 0 ; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
String inputStr = st.nextToken();
if(inputStr.equals("push")) {
lastNum = Integer.parseInt(st.nextToken());
push(lastNum);
} else if(inputStr.equals("pop")) {
sb.append(pop()).append("\n");
} else if(inputStr.equals("size")) {
sb.append(size()).append("\n");
} else if(inputStr.equals("empty")) {
sb.append(empty()).append("\n");
} else if(inputStr.equals("front")) {
sb.append(front()).append("\n");
} else if(inputStr.equals("back")) {
sb.append(back(lastNum)).append("\n");
}
}
System.out.print(sb);
}
static void push(int num) {
resultQueue.add(num);
}
static int pop() {
if(resultQueue.isEmpty()) {
return -1;
} else {
return resultQueue.remove();
}
}
static int size(){
return resultQueue.size();
}
static int empty(){
if(resultQueue.isEmpty()) {
return 1;
} else {
return 0;
}
}
static int front(){
if(resultQueue.isEmpty()) {
return -1;
} else {
return resultQueue.peek();
}
}
static int back(int num){
if(resultQueue.isEmpty()) {
return -1;
} else {
return num;
}
}
}
input값에 따라 if문으로 나누어주고
각각 실행해야 할 로직들은 메소드로 따로 빼주었습니다
구글링해보니까 switch문을 사용한 경우, 따로 메소드 안 빼준 경우가 보였었는데
사내 리팩토링 스터디에서 switch문이 그렇게 좋은 방법은 아니다고 했던 거 같기도 하고
메소드의 경우 별도로 빼주는 게 더 보기 좋지 않을까 했습니다.
해당 문제를 통해 Queue 관련 메소드는 정복한 듯 하네요ㅎㅎ
728x90
반응형