Algorithm๐Ÿฅ‡

10845.ํ

hae02y 2023. 10. 16. 08:19
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

์ •์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ํ๋ฅผ ๊ตฌํ˜„ํ•œ ๋‹ค์Œ, ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ๋ช…๋ น์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

๋ช…๋ น์€ ์ด ์—ฌ์„ฏ ๊ฐ€์ง€์ด๋‹ค.

  • push X: ์ •์ˆ˜ X๋ฅผ ํ์— ๋„ฃ๋Š” ์—ฐ์‚ฐ์ด๋‹ค.
  • pop: ํ์—์„œ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ์ •์ˆ˜๋ฅผ ๋นผ๊ณ , ๊ทธ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ํ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค.
  • size: ํ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  • empty: ํ๊ฐ€ ๋น„์–ด์žˆ์œผ๋ฉด 1, ์•„๋‹ˆ๋ฉด 0์„ ์ถœ๋ ฅํ•œ๋‹ค.
  • front: ํ์˜ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ์ •์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ํ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค.
  • back: ํ์˜ ๊ฐ€์žฅ ๋’ค์— ์žˆ๋Š” ์ •์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ํ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ฃผ์–ด์ง€๋Š” ๋ช…๋ น์˜ ์ˆ˜ N (1 โ‰ค N โ‰ค 10,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๋ช…๋ น์ด ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง„๋‹ค. ์ฃผ์–ด์ง€๋Š” ์ •์ˆ˜๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 100,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. ๋ฌธ์ œ์— ๋‚˜์™€์žˆ์ง€ ์•Š์€ ๋ช…๋ น์ด ์ฃผ์–ด์ง€๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค.

์ถœ๋ ฅ

์ถœ๋ ฅํ•ด์•ผํ•˜๋Š” ๋ช…๋ น์ด ์ฃผ์–ด์งˆ ๋•Œ๋งˆ๋‹ค, ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•œ๋‹ค.

์‹œ๊ฐ„ ์ œํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ์ œ์ถœ ์ •๋‹ต ๋งžํžŒ ์‚ฌ๋žŒ ์ •๋‹ต ๋น„์œจ
0.5 ์ดˆ (์ถ”๊ฐ€ ์‹œ๊ฐ„ ์—†์Œ) 256 MB 113961 52728 41441 48.953%

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

ํ’€์ด

ํ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฌธ์ œ. ์‰ฌ์šด ๋ฌธ์ œ์ธ๋ฐ ์ฒ˜๋ฆฌ๊ณผ์ •์—์„œ back๋ถ€๋ถ„์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋ฉด ์ข‹์„๊นŒ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ตฌํ˜„ํ•œ ๋ฐฉ๋ฒ•์€ ๋งˆ์ง€๋ง‰์— push ๋œ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ง€๊ณ  ์˜ค๋Š” ๋ฐฉ๋ฒ•์ธ๋ฐ ์•„๋ž˜์™€ ๊ฐ™์ดqueue.getlast()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์Œ์„ ์ฐพ์•˜๋‹ค.

queue.getlast()๋ฅผ ์‚ฌ์šฉ
sb.append(((LinkedList<Integer>) queue).getLast()).append('\n');

์ฝ”๋“œ

public class ํ {  

    static Queue<Integer> queue = new LinkedList<>();  


    public static void main(String[] args) {  

        Scanner sc = new Scanner(System.in);  
        StringBuilder sb = new StringBuilder();  

        int N = sc.nextInt();  
        int last = 0;  

        for(int i=0; i<N; i++){  

            switch (sc.next()){  
                case "push":  
                    int num = sc.nextInt();  
                    last = num;  
                    push(num);  
                    break;  
                case "pop":  
                    sb.append(pop()).append("\n");  
                    break;  
                case "size":  
                    sb.append(size()).append("\n");  
                    break;  
                case "empty":  
                    sb.append(empty()).append("\n");  
                    break;  
                case "front":  
                    sb.append(front()).append("\n");  
                    break;  
                case "back":  
                    sb.append(back(last)).append("\n");  
                    break;  
            }  
        }  
        System.out.println(sb);  
        sc.close();  
    }  

    private static int back(int last) {  
        if(queue.isEmpty()) return -1;  
        return last;  
    }  

    private static int front() {  
        if(queue.isEmpty()) return -1;  
        return queue.peek();  
    }  

    private static int empty() {  
        if (queue.isEmpty()) return 1;  
        else return 0;  
    }  

    private static int size() {  
        return queue.size();  
    }  

    private static int pop() {  
        if(queue.isEmpty()) return -1;  
        return queue.poll();  
    }  

    private static void push(int num) {  
        queue.add(num);  
    }  
}
๋ฐ˜์‘ํ˜•