본문 바로가기
알고리즘/백준 문제풀이

백준 [자바 java] 10845 : 큐

by 잔디🌿 2023. 7. 12.

    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);
      
     
        
     }
    
    
     
     
     }