반응형
Queue에서 기본적인 메서드들을 알 수 있게 해주는 문제입니다.
간단하게 특징을 소개하자면 FIFO( First In First Out)의 구조로 먼저 들어간 것이 먼저 나가는 일자로 줄을 서는 형태와 유사하다고 보시면 됩니다.
헷갈리는 두 가지 메서드만 알아보도록 하겠습니다.
peek : 맨 앞에 있는 원소를 반환합니다. (pop과 다른 점은 원소를 꺼내지는 않습니다. 그대로 큐에 남아 있습니다.)
poll : 큐의 맨 앞에 있는 원소를 삭제합니다.
int num = queue.poll()과 같이 쓴다면 num에 맨 앞 원소가 들어가고 큐에는 그 원소가 없어지게 됩니다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int back = -1;
int T = Integer.parseInt(br.readLine());
Queue<Integer> queue = new LinkedList<>();
while (T-- > 0) {
StringTokenizer st = new StringTokenizer(br.readLine());
String s = st.nextToken();
switch (s) {
case "push":
back = Integer.parseInt(st.nextToken());
queue.offer(back);
break;
case"pop":
if(queue.isEmpty()) {
sb.append(-1).append('\n');
break;
} else {
sb.append(queue.poll()).append('\n');
break;
}
case "size":
sb.append(queue.size()).append('\n');
break;
case "empty":
if(queue.isEmpty()) {
sb.append(1).append('\n');
break;
} else {
sb.append(0).append('\n');
break;
}
case "front":
if(queue.isEmpty()) {
sb.append(-1);
break;
} else {
sb.append(queue.peek()).append('\n');
break;
}
case "back":
if(queue.isEmpty()) {
sb.append(-1).append('\n');
break;
} else {
sb.append(back).append('\n');
break;
}
}
}
System.out.println(sb);
}
}
반응형
'백준 > Data Structures' 카테고리의 다른 글
백준 17608 자바 (0) | 2022.08.23 |
---|---|
백준 2161 자바 (0) | 2022.08.22 |
백준 4949 자바 (0) | 2022.08.22 |
백준 9012 자바 (0) | 2022.08.22 |
백준 10828 자바 (0) | 2022.08.19 |