문제설명
명령어들을 입력받고 그 기능들을 구현하는 문제입니다.
명령의 종류
1. push X: 정수 X를 큐에 넣는 연산이다.
2. pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
3. size: 큐에 들어있는 정수의 개수를 출력한다.
4. empty: 큐가 비어있으면 1, 아니면 0을 출력한다.
5. front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
6. back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
작동 순서
1. 큐를 생성해줍니다.
2. 실행할 명령어의 개수를 입력받습니다.
3. 명령어를 입력받고 명령어에 따라 기능을 수행합니다.
4. push가 입력된 경우 입력된 숫자 last 변수에 저장하고 last를 큐에 추가합니다.
5. pop이 입력된 경우 큐의 첫자리를 출력하고 삭제합니다.
6. size가 입력된 경우 큐의 길이를 출력합니다.
7. empty가 입력된 경우 큐가 비어있으면 1 아니면 0을 출력합니다.
8. front가 입력된 경우 큐의 가장 앞자리를 출력합니다.
9. back이 입력된 경우 가장 최근에 입력된 숫자인 last를 출력합니다.
소스코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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));
int N, last=0;
Queue<Integer> queue=new LinkedList<Integer>();
String cmd;
N = Integer.parseInt(br.readLine());
for (int i = 0; i < N; i++) {
cmd = br.readLine();
if (cmd.charAt(1)=='u') {
last=Integer.parseInt(cmd.split(" ")[1]);
queue.add(last);
} else if (cmd.charAt(1)=='o')
System.out.println((queue.isEmpty())?-1:queue.poll());
else if (cmd.charAt(1)=='i')
System.out.println(queue.size());
else if (cmd.charAt(1)=='m')
System.out.println((queue.isEmpty())?1:0);
else if (cmd.charAt(1)=='r')
System.out.println((queue.isEmpty())?-1:queue.peek());
else
System.out.println((queue.isEmpty())?-1:last);
}
}
}
후기
자바 공부를 시작해보려고 하는데 파이썬에 비해서 어려운 느낌이 있는 것 같습니다. 앞으로 더욱 열심히 해야할 것 같습니다.