Computer Science (CS)/알고리즘

[백준/Java] 9012번 괄호

eune7 2024. 11. 17. 23:53
728x90
반응형

 

 

 

 

 

 

문제

 

 

 

정답

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());

        for(int i = 0 ; i < N; i++) {
            System.out.println(checkBracket(br.readLine()));
        }
    }

    static String checkBracket(String testBracket){
        Queue<Character> resultQueue = new LinkedList<>();

        for(int i = 0 ; i < testBracket.length(); i++) {

            char c = testBracket.charAt(i);

            if(c == '(') {
                resultQueue.offer(c);
            } else if(resultQueue.isEmpty()) { // ')'인데 비어있을 경우
                return "NO";
            } else { // ')'일 경우 짝이 맞으니 queue 하나 삭제
                resultQueue.poll();
            }
        }

        if(resultQueue.isEmpty()) {
            return "YES";
        } else {
            return "NO";
        }
    }
}

input값을 어디에 쌓아두었다가 닫는 괄호가 들어오면 어떻게 표시를 해주어야 겠다는 생각이 들었어요

 

Queue나 Stack 둘 중 하나를 써야겠다는 생각이 들었는데

FIFO든 LIFO든 해당 문제에서는 상관없다고 판단해서 

최근에 사용했던 Queue를 사용해주었습니다.

 

 

 

728x90
반응형