알고리즘/백준 문제풀이

백준 [자바 java] 10845 : 큐

잔디🌿 2023. 7. 12. 22:40

https://www.acmicpc.net/problem/10845

 

10845번: 큐

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

www.acmicpc.net

 

문제설명

 

앞서 작성했던 스택과 비슷한 문제이다.

https://ethereal-coder.tistory.com/41

 

백준 [자바 java] 10828 : 스택

https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 10

ethereal-coder.tistory.com

입력받을 문장 수를 입력받고 , 그 횟수만큼 문장이 의미하는 기능을 수행하면 된다.

 

문제 풀이

  • 입력받을 문장 수를  n에 입력받는다.
  • n만큼 for문을 만든다
  • Integer형식의 Queue를 만든다.
  • StringTokneizer로 문자열을 입력받는다.
  • push이면 큐에 넣을 수도 입력받고,그 수를 큐의 가장 끝을 의미하는 keep변수와 큐에 집어넣는다.
  • 나머지 문자들도 각각 의미하는 기능을 수행하도록 한다(pop와 peek는 값을 stringBuilder에 넣는다.)

 

풀이 코드

 

import java.util.*;
import java.io.*;


class Main{
	
 public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st ;
    
    StringBuilder sb = new StringBuilder();
    Queue<Integer> queue = new LinkedList<>();
    
    int n = Integer.parseInt(br.readLine());
    
    int i;
    int keep = 0;
    
    for(i = 0;i<n;i++) {
    	st = new StringTokenizer(br.readLine());
    	String now = st.nextToken();
    	if(now.equals("push")) {
    		int a = Integer.parseInt(st.nextToken());
    		queue.offer(a);
    		keep = a;
    		
    	}
    	else if(now.equals("pop")) {
    		if(queue.isEmpty() == false)
    			{int k = queue.poll();
    		sb.append(k).append("\n");}
    		else sb.append(-1).append("\n");
    		
    		
    	}
    	else if(now.equals("size")) {
    		sb.append(queue.size()).append("\n");
    	}
    	else if(now.equals("empty")) {
    		if(queue.isEmpty() == true) {
    			sb.append(1).append("\n");
    		}
    		else {
    			sb.append(0).append("\n");
    		}
    		
    	}
    	else if(now.equals("front")) {
    		if(queue.isEmpty() == false)
    			sb.append(queue.peek()).append("\n");
    		else sb.append(-1).append("\n");
    		
    	}
    	else if(now.equals("back")) {
    		if(queue.isEmpty() == false)
    			sb.append(keep).append("\n");
    		else sb.append(-1).append("\n");
    	}
    	
    	
    }
    	

    
    
    
    System.out.println(sb);
  
 
    
 }


 
 
 }