▶ 코테 준비/백준 문제풀이

[백준 4949번 자바] 균형잡힌 세상

휴학생감자 2022. 6. 20. 15:04

▶문제출처 : https://www.acmicpc.net/problem/4949

 

4949번: 균형잡힌 세상

하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다

www.acmicpc.net

 

 

 

 

 

 


 

 

 

# 스택 활용

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

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

        String s;

        while(true){
            s = br.readLine();

            //문장이 . 이면 종료
            if(s.equals(".")){
                break;
            }
            sb.append(checkStack(s)).append('\n');
        }
        System.out.println(sb);
    }

    public static String checkStack(String s){
        Stack<Character> stack = new Stack<>();

        for(int i=0; i<s.length(); i++){
            char c = s.charAt(i);

            // 쌍을 이루어야 하는 괄호만 확인하고 나머지 문자는 스킵함
            if(c=='(' || c =='['){
                stack.push(c);
            }
            else if(c==')'){
                if(stack.empty() || stack.peek()!='('){
                    return "no";
                } else {
                    stack.pop();
                }
            }
            else if(c==']'){
                if(stack.empty() || stack.peek()!='['){
                    return "no";
                } else {
                    stack.pop();
                }
            }
        }

        if(stack.empty()) return "yes";
        else return "no";
    }
}