코딩가딩가

[JAVA]BOJ 4949, 균형잡힌 세상

Noooodle 2024. 8. 25. 01:51

스택을 활용한 문제이다. 예외처리가 있어 좀 까다롭게 느낄 수 있다. 나는 전에 c언어로 스택 구현하면서 비슷한 문제를 풀어봤어서 쉽게 성공했다.

 

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

public class BOJ4949 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Stack<Character> stack = new Stack<>();
        String str;
        int i, flag = 1;

        str = br.readLine();

        while(!str.equals(".")){
            for(i=0;i<str.length();i++){
                if(str.charAt(i) == '(' || str.charAt(i) == '[')
                    stack.push(str.charAt(i));
                else if(str.charAt(i) == ')'){
                    if(stack.isEmpty() || stack.pop() != '('){
                        flag = 0;
                        break;
                    }
                }
                else if(str.charAt(i) == ']'){
                    if(stack.isEmpty() || stack.pop() != '['){
                        flag = 0;
                        break;
                    }
                }
            }
            // 문장이 끝났는데 스택이 비어있지 않으면 균형이 아님
            if(!stack.isEmpty())
                flag = 0;

            if(flag == 1)
                System.out.println("yes");
            else
                System.out.println("no");

            // 초기화
            str = br.readLine();
            flag = 1;
            while (!stack.isEmpty())
                stack.pop();
        }
    }
}

'코딩가딩가' 카테고리의 다른 글

[JAVA]BOJ 2504, 괄호의 값  (1) 2024.08.29
[JAVA]BOJ 10799, 쇠막대기  (0) 2024.08.25
[JAVA]BOJ 5430, AC  (0) 2024.08.21
[JAVA]BOJ 10866, 덱  (0) 2024.08.20
[JAVA]BOJ 1966, 프린터 큐  (0) 2024.08.19