_

Always be tactful

Programming/BOJ Solutions

[Java] BOJ 12789: 도키도키 간식드리미

funczun 2025. 2. 18. 02:18


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;

public class Problem12789 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine());

        Stack<Integer> stack = new Stack<>();

        int targetOrder = 1;

        while (st.hasMoreTokens()) {
            if (!stack.isEmpty()) {
                if (stack.peek() == targetOrder) {
                    stack.pop();
                    targetOrder++;
                    continue;
                }
            }

            int inputOrder = Integer.parseInt(st.nextToken());

            if (inputOrder == targetOrder) {
                targetOrder++;
            } else {
                stack.push(inputOrder);
            }
        }

        if (!stack.isEmpty()) {
            int tryCount = stack.size();

            while (tryCount-- > 0) {
                if (stack.peek() == targetOrder) {
                    stack.pop();
                    targetOrder++;
                } else {
                    System.out.println("Sad");
                    return;
                }
            }
        }

        System.out.println("Nice");
    }
}

내가 풀었지만 맛이 없다. 뭔가 비효율적으로 푼 것 같은데, 당장은 모르겠으니 다음에 비슷한 문제로 다시 가져오도록 하겠다.