ν•΄λ²„λ‹ˆ 2023. 11. 15. 16:48
λ°˜μ‘ν˜•

문제

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

풀이

 

"큐2"λŠ” "큐"λΌλŠ” λ¬Έμ œμ—μ„œ "큐의 κ°€μž₯ λ’€μ—μžˆλŠ” μ •μˆ˜λ₯Ό 좜λ ₯ν•œλ‹€" λΌλŠ” κΈ°λŠ₯이 μΆ”κ°€λœ λ¬Έμ œμ΄λ‹€. 

 

 

κ·Έλ ‡κ²Œ ν’€μ—ˆλŠ”λ° μ²˜μŒμ—λŠ” μ‹œκ°„ μ΄ˆκ³Όκ°€ λ–΄λ‹€.

System.out. 으둜 λ°”λ‘œ λ°”λ‘œ 좜λ ₯ν–ˆλŠ”λ°

μ’€ 더 λΉ λ₯Έ BufferedWrtierλ₯Ό μ΄μš©ν•΄μ„œ

담아놨닀가 λΏŒλ €μ£Όμ—ˆλ”λ‹ˆ μ‹œκ°„μ΄ˆκ³Όκ°€ 해결됐닀.

 

그리고 λ‚˜μ„œ λ‹€μ‹œ μ œμΆœν–ˆλŠ”λ° ν‹€λ ΈμŠ΅λ‹ˆλ‹€λΌκ³  λ–΄λ‹€.

μ•Œκ³  λ΄€λ”λ‹ˆ 큐의 κ°€μž₯ λ’€μ—μžˆλŠ” μ •μˆ˜λ₯Ό 좜λ ₯ν•˜κ³  없을 경우 -1을 좜λ ₯ν•˜λΌκ³  ν–ˆλŠ”λ°

-1을 좜λ ₯ν•˜λŠ” if문을 λ§Œλ“€μ§€ μ•Šμ•˜μ—ˆλ‹€.

 

그리고 pop ν•¨μˆ˜λ₯Ό λ§Œλ“€ λ•Œ queue.isEmpty()κ°€ μ•„λ‹Œ queue.size() >0 이라 μΌλŠ”λ°

queue.isEmpty()둜 ν•΄μ•Ό 더 μ •ν™•ν•˜κ³  λ¬Έλ§₯상 λ§žλŠ” λ©”μ†Œλ“œ κ°™λ‹€. 

 

κ·Έλ ‡κ²Œν•΄μ„œ μ œμΆœν–ˆλ”λ‹ˆ "λ§žμŠ΅λ‹ˆλ‹€"라고 λ–΄λ‹€. 

 

 

1. String[] input = br.readLine().split("\\s");

String λ°°μ—΄λ‘œ μž…λ ₯κ°’ λ°›κΈ° 

package algorithm;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
import java.util.Queue;

public class Main {

    // μ •μˆ˜ xλ₯Ό 큐에 λ„£κΈ°
    public int pushNum(Queue<Integer> queue, int num) {
        queue.offer(num);
        return num;
    }

    // νμ—μ„œ κ°€μž₯ μ•žμ— μžˆλŠ” μ •μˆ˜ 좜λ ₯, 없을 경우 -1 좜λ ₯
    public int getFront(Queue<Integer> queue) {
        if (queue.isEmpty()) {
            return -1;
        } else {
            return queue.peek();
        }
    }

    // 큐의 κ°€μž₯ 뒀에 μžˆλŠ” μ •μˆ˜ 좜λ ₯, 없을 경우 -1 좜λ ₯
    public int getBack(Queue<Integer> queue, int back) {
        if (queue.isEmpty()) {
            return -1;
        } else {
            return back;
        }
    }

    // 큐에 λ“€μ–΄μžˆλŠ” μ •μˆ˜μ˜ 개수
    public int getSize(Queue<Integer> queue) {
        return queue.size();
    }

    // 큐가 λΉ„μ–΄μžˆμœΌλ©΄ 1, μ•„λ‹ˆλΌλ©΄ 0
    public int getEmpty(Queue<Integer> queue) {
        if (queue.isEmpty()) {
            return 1;
        } else {
            return 0;
        }
    }

    // 큐 μ‚­μ œν•˜κΈ°
    public int popFront(Queue<Integer> queue) {
        if (queue.isEmpty()) {
            return -1;
        } else {
            return queue.poll();
        }
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        Queue<Integer> queue = new LinkedList<>();
        int current = 0;
        Main queueCalc = new Main();

        int n = Integer.parseInt(br.readLine());
        for (int i = 0; i < n; i++) {
            String[] input = br.readLine().split("\\s");

            switch (input[0]) {
                case "push":
                    current = queueCalc.pushNum(queue, Integer.parseInt(input[1]));
                    break;
                case "front":
                    bw.write(queueCalc.getFront(queue) + "\n");
                    break;
                case "back":
                    bw.write(queueCalc.getBack(queue, current) + "\n");
                    break;
                case "size":
                    bw.write(queueCalc.getSize(queue) + "\n");
                    break;
                case "empty":
                    bw.write(queueCalc.getEmpty(queue) + "\n");
                    break;
                case "pop":
                    bw.write(queueCalc.popFront(queue) + "\n");
                    break;
            }
        }
        bw.flush();
        bw.close();

    }
}

 

 

 

 

 

 

2.  StringTokenizer st = new StringTokenizer(br.readLine());

String command = st.nextToken();

λ°”λ‘œ nextToken()으둜 λ°›κΈ° 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class Main {

    // μ •μˆ˜ xλ₯Ό 큐에 λ„£κΈ°
    public int pushNum(Queue<Integer> queue, int num) {
        queue.offer(num);
        return num;
    }

    // νμ—μ„œ κ°€μž₯ μ•žμ— μžˆλŠ” μ •μˆ˜ 좜λ ₯, 없을 경우 -1 좜λ ₯
    public int getFront(Queue<Integer> queue) {
        if (queue.isEmpty()) {
            return -1;
        } else {
            return queue.peek();
        }
    }

    // 큐의 κ°€μž₯ 뒀에 μžˆλŠ” μ •μˆ˜ 좜λ ₯, 없을 경우 -1 좜λ ₯
    public int getBack(Queue<Integer> queue, int back) {
        if (queue.isEmpty()) {
            return -1;
        } else {
            return back;
        }
    }

    // 큐에 λ“€μ–΄μžˆλŠ” μ •μˆ˜μ˜ 개수
    public int getSize(Queue<Integer> queue) {
        return queue.size();
    }

    // 큐가 λΉ„μ–΄μžˆμœΌλ©΄ 1, μ•„λ‹ˆλΌλ©΄ 0
    public int getEmpty(Queue<Integer> queue) {
        if (queue.isEmpty()) {
            return 1;
        } else {
            return 0;
        }
    }

    // 큐 μ‚­μ œν•˜κΈ°
    public int popFront(Queue<Integer> queue) {
        if (queue.isEmpty()) {
            return -1;
        } else {
            return queue.poll();
        }
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        Queue<Integer> queue = new LinkedList<>();
        int current = 0;
        Main queueCalc = new Main();

        int n = Integer.parseInt(br.readLine());
        
        for (int i = 0; i < n; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            String command = st.nextToken();
            
            switch (command) {
                case "push":
                    current = queueCalc.pushNum(queue, Integer.parseInt(st.nextToken()));
                    break;
                case "front":
                    bw.write(queueCalc.getFront(queue) + "\n");
                    break;
                case "back":
                    bw.write(queueCalc.getBack(queue, current) + "\n");
                    break;
                case "size":
                    bw.write(queueCalc.getSize(queue) + "\n");
                    break;
                case "empty":
                    bw.write(queueCalc.getEmpty(queue) + "\n");
                    break;
                case "pop":
                    bw.write(queueCalc.popFront(queue) + "\n");
                    break;
            }
        }
        bw.flush();
        bw.close();

    }
}

 

 

 

 

 

 

 

 

 

 

μ •λ‹΅ 

1.

 

2.

2번이 더 λΉ λ₯΄λ‹€. 

 

 

 

 

 

λ°˜μ‘ν˜•