큐 2 (백준 18258번)

박영준·2023년 5월 23일
0

코딩테스트

목록 보기
143/300

메모

/*
해당 명령어들은 '큐'를 기준으로 함

push X : 정수X 넣기
pop : 가장 앞의 정수 빼서 출력 (단, 정수가 없다면 -1 출력)
size : 정수 개수 출력
empty : 비어 있으면 1, 아니면 0 출력
front : 가장 앞의 정수 출력 (단, 정수가 없다면 -1 출력)
back : 가장 뒤의 정수 출력 (단, 정수가 없다면 -1 출력)
*/

해결법

방법 1

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
import java.util.Deque;
import java.util.LinkedList;
 
public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		Deque<Integer> q = new LinkedList<>();		// LinkedList 선언
		
		int N = Integer.parseInt(br.readLine());		// 형 변환
		
		StringTokenizer command;		// 데이터 가공을 위해 선언 (BuffredReader 中)
		
		while (N-- > 0) {
			command = new StringTokenizer(br.readLine(), " ");	// 문자열 분리 
			
			switch (command.nextToken()) {	
				case "push":		// offer : 큐의 맨 뒤에 요소를 추가
					q.offer(Integer.parseInt(command.nextToken()));	
					break;
			
				case "pop" :		// poll : 가장 앞에 있는 요소를 삭제 (단, 삭제할 원소가 없을 경우 예외를 던지는 것이 아닌 null을 반환)
					Integer item = q.poll();	
					if (item == null) {
						sb.append(-1).append('\n');
					} else {
						sb.append(item).append('\n');
					}
					break;
				
				case "size":		// 정수 개수 출력
					sb.append(q.size()).append('\n');
					break;
				
				case "empty":		// 비어 있으면 1, 아니면 0 출력
					if(q.isEmpty()) {
						sb.append(1).append('\n');
					} else {
						sb.append(0).append('\n');
					}
					break;
				
				case "front":		// peek() : 큐에 꺼낼 요소가 없을 경우 null을 반환
					Integer ite = q.peek();
					if (ite == null) {
						sb.append(-1).append('\n');
					} else {
						sb.append(ite).append('\n');
					}
					break;
				
				case "back":		// peekLast() : 큐에 꺼낼 요소가 없을 경우 null을 반환
					Integer it = q.peekLast();	 
					if(it == null) {
						sb.append(-1).append('\n');
					} else {
						sb.append(it).append('\n');
					}
					break;
				}
            }    
		}
        
		System.out.println(sb);
	}
}

큐 2 (백준 18258번)

profile
개발자로 거듭나기!

0개의 댓글