hahn

[백준 - JAVA] 큐 본문

코딩테스트 연습/백준(JAVA)

[백준 - JAVA] 큐

hahn 2021. 9. 17. 15:04
728x90
반응형

10845번: 큐 (acmicpc.net)

 

10845번: 큐

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

http://boj.kr/f645b1a9b0b649d3bc3259827c72fbf8

 

공유 소스 보기

 

www.acmicpc.net

더보기

 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

class Main{
   
    public static int[] queue;
	public static int rear = 0;
	public static int front = 0;
    
    public static void main(String[] args) throws IOException {
        
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		StringTokenizer st;
		
		int commandCount = Integer.parseInt(br.readLine()),
			rear = 0, front = 0;
		
		queue = new int[commandCount];
		
		for(int i = 0; i < commandCount; i++) {
			
			st = new StringTokenizer(br.readLine(), " ");
			
			switch(st.nextToken()) {
			
			case ("push") :
				
				push(Integer.parseInt(st.nextToken()));
				break;
			
			case ("pop") :
				
				bw.write(pop() + "\n");
				break;
				
			
			case ("size") :
				
				bw.write(size() + "\n");
				break;
			
			case ("empty") :
				
				bw.write(empty() + "\n");
			break;
			
			case ("front") :
				
				bw.write(front() + "\n");
				break;
			
			case ("back") :
				
				bw.write(back() + "\n");
				break;
			
			}
			
		}
		
		bw.close(); 
        
    }
    
	public static void push(int number) {
		
		queue[rear] = number;
		
		rear++;
		
	}
	
	public static String pop() {
		
		return String.valueOf(front < rear ? queue[front++] : -1);
		
	}
	
	public static String size() {
		
		return String.valueOf(rear - front);
		
	}
    
	public static String empty() {
		
		return String.valueOf(rear - front == 0 ? 1 : 0);
		
	}
    
	public static String front() {
		
		return String.valueOf(front == rear ? -1 : queue[front]);
		
	}
    
	public static String back() {
		
		return String.valueOf(rear - 1 < front ? -1 : queue[rear - 1]);
		
	}
    
}

 

stack에 이어 큐(queue)를 구현하는 문제

 

큐는 포인터가 두 개라 스택보다는 까다롭다.

728x90
반응형