Information Security Study

[백준] 18258: 큐2 본문

Programming/JAVA

[백준] 18258: 큐2

gayeon_ 2024. 1. 22. 17:29

 

 

자료구조 중 하나인 큐를 구현하는 문제이다.

 

 

 

 

 

 

package boj;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.EmptyStackException;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws NumberFormatException, IOException, EmptyStackException{
		// StringBuilder를 사용하여 결과를 한 번에 출력하기 위한 객체 생성
        StringBuilder sb = new StringBuilder();

        // BufferedReader를 사용하여 입력을 받기 위한 객체 생성
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        // 저장할 큐 생성
        Queue<Integer> queue = new LinkedList<Integer>();
        
        // 입력 횟수
       	int T = Integer.parseInt(br.readLine());
       	
       	int current = 0;
       	
       	// 입력 횟수만큼 반복 
       	for(int i = 0; i < T; i++) {
       		StringTokenizer st = new StringTokenizer(br.readLine());
       		String S = st.nextToken();
       		
       		switch (S) {
			case "push":
				current = Integer.parseInt(st.nextToken());
				queue.offer(current);
				break;
				
			case "pop":
				if(queue.isEmpty()) sb.append(-1).append('\n');
				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');
				else sb.append(0).append('\n');
				break;
				
			case "front":
				if(queue.isEmpty()) sb.append(-1).append('\n');
				else sb.append(queue.peek()).append('\n');
				break;
				
			case "back":
				if(queue.isEmpty()) sb.append(-1).append('\n');
				else sb.append(current).append('\n');
				break;
			}
       		
       		
       	}
       	
       	System.out.println(sb);
	}
	

  

}

 

 

 

큐1과 동일한 문제이다.

해설은 아래 링크된 글을 참고하면 된다.

 

Queue<Integer> queue = new LinkedList<>();로 사용하는 이유

  • Queue 인터페이스는 자바에서 컬렉션 프레임워크의 일부이고 인스턴스를 생성할 수 없다.
  • 따라서 Queue 인터페이스를 구현하는 클래스를 사용하여 큐를 생성해야 한다.
  • 이때 LinkedList는 Queue 인터페이스를 구현하고 있기 때문에 Queue 변수에 LinkedList의 인스턴스를 할당할 수 있다.
  • 인터페이스를 활용하여 다형성을 구현하기 위해 사용한다.
  • 유연성을 유지하여 나중에 다른 큐 구현체로 변경이 가능하기 때문이다.

중요한 이유는 마지막 두 가지다.

 

 

https://gayeon-l.tistory.com/231

 

[백준] 10845: 큐

큐를 구현하는 문제이다. 입출력 예제다. package boj; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.EmptyStackException; import java.util.LinkedList; import java.util.Queue; impo

gayeon-l.tistory.com

 

'Programming > JAVA' 카테고리의 다른 글

[백준] 1158: 요세푸스 문제  (0) 2024.01.23
[백준] 2164: 카드2  (2) 2024.01.23
[백준] 10845: 큐  (0) 2024.01.22
[백준] 1874: 스택 수열  (0) 2024.01.22
[백준] 3986: 좋은 단어  (0) 2024.01.19