🐣 알고리즘 삐약/💻 백준 삐약

46 삐약 : 백준 4949 | 균형잡힌 세상|[바킹독 문제 풀이|Stack|JAVA]

우주수첩 2023. 12. 20. 09:38
728x90

https://www.acmicpc.net/problem/4949

 

4949번: 균형잡힌 세상

각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에

www.acmicpc.net

 

1. toCharArray & BufferedReader 사용

package BKD_0x8_Stack_Application;

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

public class BOJ_4949_toCharArray {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Stack<Character> bracket = new Stack<>();
        while(true){
            String sentence = br.readLine();
            if( sentence.equals(".")) break;
            for(char c : sentence.toCharArray()){
                switch (c){
                    case '(':
                        bracket.push(c);
                        break;
                    case ')':
                        if(!bracket.isEmpty()&&bracket.peek()=='(') bracket.pop();
                        else bracket.push(c);
                        break;
                    case '[':
                        bracket.push(c);
                        break;
                    case ']':
                        if(!bracket.isEmpty()&&bracket.peek()=='[') bracket.pop();
                        else bracket.push(c);
                        break;
                }

            }
            if (!bracket.isEmpty()) System.out.println("no");
            else System.out.println("yes");

            bracket.clear();

        }
    }
}

 

 

 

2. split & BufferedReader 사용

package BKD_0x8_Stack_Application;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class BOJ_4949_split {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Stack<String> bracket = new Stack<>();
        while(true){
            String sentence = br.readLine();
            if( sentence.equals(".")) break;
            String[] splited = sentence.split("");
            for(String str : splited){
                switch (str){
                    case "(":
                        bracket.push(str);
                        break;
                    case ")":
                        if(!bracket.isEmpty()&&bracket.peek().equals("(")) bracket.pop();
                        else bracket.push(str);
                        break;
                    case "[":
                        bracket.push(str);
                        break;
                    case "]":
                        if(!bracket.isEmpty()&&bracket.peek().equals("[")) bracket.pop();
                        else bracket.push(str);
                        break;
                }

            }
            if (!bracket.isEmpty()) System.out.println("no");
            else System.out.println("yes");

            bracket.clear();

        }
    }
}

 

 

 

결과

 

위에가 split을 사용하여 String 배열로 진행한 결과

아래가 toCharArray를 사용하여 char 배열로 진행한 결과이다.

 

 

 

728x90