만능재주꾼

[백준 10845] 큐 - JAVA 본문

💻 Algorithm/BOJ

[백준 10845] 큐 - JAVA

유고랭 2020. 12. 26. 13:37

문제

풀이 포인트

  • 큐로 사용할 배열 만들기
  • push 할 때 back을 증가해주는 것으로 배열에 값 추가
  • pop 할 때 front를 증가해주는 것으로 배열의 삭제 기능 구현
  • 큐의 size는 back-front+1로 알 수 있음
  • 큐의 empty판별은 back-front가 1일 경우 empty

풀이

import java.io.*;
import java.util.StringTokenizer;
public class Main {
	public static void main(String[] args)throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
		int front=0,back=-1; //front는 맨 앞, back은 맨 뒤를 가리키는 인덱스
		int num = Integer.parseInt(br.readLine()); 
		int []queue = new int [num]; //큐 배열 생성
		
		StringTokenizer st;
		for (int i=0;i<num;i++) {
			st = new StringTokenizer(br.readLine()); 
			String command = st.nextToken(); //읽어온 st의 첫 번째 토큰을 command에 저장
			switch(command) {
			    case "push":
			    	queue[++back] = Integer.parseInt(st.nextToken());
			    	break;
			    case "pop":
				    if (back-front==-1) bw.write("-1\n");
				    else bw.write(queue[front++]+"\n");
				    break;
			    case "size":
			    	bw.write(back-front+1+"\n");
				    break;
			    case "empty":
				    if (back-front==-1) bw.write("1\n");
				    else bw.write("0\n");
				    break;
			    case "front":
			    	if (back-front==-1) bw.write("-1\n");
			    	else bw.write(queue[front]+"\n");
				    break;
			    case "back":
			    	if (back-front==-1) bw.write("-1\n");
			    	else bw.write(queue[back]+"\n");
				    break;
			}
		}
		br.close(); bw.flush(); bw.close();
	}
}

 

Comments