본문 바로가기
백준

백준 18258: 큐 2(java)

by unhyepnhj 2024. 7. 15.

문제


풀이

이전에 풀었던 스택 기본 문제들과 동일한 유형이므로, 똑같이 입력을 받고 switch문으로 케이스를 나누어 풀이하면 된다. 

큐를 별도로 구현하지 않고 JDK에서 제공하는 기본 라이브러리를 사용했다. (큐 직접 구현은 이곳을 참고)

 

이전 큐 문제에서는 back을 구현할 때 num을 출력하는 것으로 해결했는데, 이번에는 덱을 사용해 peekLast() 메소드로 풀이했다. 

StringBuilder를 사용하지 않으면 시간 초과 에러가 떠서 사용해 주었다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Deque;
import java.util.LinkedList;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws IOException{
		BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
		Deque<Integer> deque=new LinkedList<>();
		StringBuilder sb=new StringBuilder();
		StringTokenizer st;
		
		int N=Integer.parseInt(in.readLine());
		for(int i=0; i<N; i++) {
			st=new StringTokenizer(in.readLine());
			String cmd=st.nextToken();
			
			switch(cmd) {
			case "push":
				int num=Integer.parseInt(st.nextToken());
				deque.addLast(num);
				break;
			case "pop":
				if(deque.isEmpty())
					sb.append(-1).append("\n");
				else 
					sb.append(deque.pollFirst()).append("\n");
				break;
			case "size":
				sb.append(deque.size()).append("\n");
				break;
			case "empty":
				if(deque.isEmpty())
					sb.append(1).append("\n");
				else
					sb.append(0).append("\n");
				break;
			case "front":
				if(deque.isEmpty())
					sb.append(-1).append("\n");
				else
					sb.append(deque.peekFirst()).append("\n");
				break;
			case "back":
				if(deque.isEmpty())
					sb.append(-1).append("\n");
				else
					sb.append(deque.peekLast()).append("\n");
				break;
			default:
				break;
			}
		}
		System.out.print(sb);
	}
}

'백준' 카테고리의 다른 글

백준 11866: 요세푸스 문제 0(java)  (0) 2024.07.16
백준 2164: 카드 2(java)  (0) 2024.07.16
백준 12789: 도키도키 간식드리미(java)  (0) 2024.07.15
백준 10845: 큐(java)  (0) 2024.07.14
백준 4949: 균형잡힌 세상(java)  (0) 2024.07.12