본문 바로가기

문제풀이/백준 문제

BackJoon_4949 균형잡힌 세상

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

public class 균형잡힌세상_4949 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        Stack<String> write = new Stack<>(); // 문장을 입력받을 공간

        // 문장 입력받기
        while(true){
            String w = br.readLine();
            if(w.equals(".")){ // 만약 온점 하나만 입력받았다면 입력을 종료한다.
                break;
            }
            write.push(w); // 입력받은 것은 스택에 넣어준다.
        }

        for(int i=0; i<write.size(); i++){
            Stack<Character> stack = new Stack<>();
            for(int j=0; j<write.get(i).length(); j++){
                // 문자열이 (나 [로 되어있으면 스택에 넣어준다.
                if(write.get(i).charAt(j)=='(' | write.get(i).charAt(j)=='['){
                    stack.push(write.get(i).charAt(j));
                }
                // 문자열이 )일 때 이전 문자열이 (라면 이전 문자열을 빼준다.
                else if (write.get(i).charAt(j)==')') {
                    // 스택이 비어있다면 문자열 하나를 넣어주고 for문을 종료해준다.
                    if(stack.isEmpty()) {
                        stack.push('1');
                        break;
                    }
                    if(stack.peek()=='('){
                        stack.pop();
                    } else {
                        break;
                    }
                }
                // 문자열이 ]일 때 이전 문자열이 [라면 이전 문자열을 빼준다.
                else if (write.get(i).charAt(j)==']') {
                    // 스택이 비어있다면 문자열 하나를 넣어주고 for문을 종료해준다.
                    if(stack.isEmpty()) {
                        stack.push('1');
                        break;
                    }
                    if(stack.peek()=='['){
                        stack.pop();
                    } else {
                        break;
                    }
                }
            }

            // stack이 비어있지 않다면 yes를 출력해주고, 아니라면 no를 출력해준다.
            if(stack.isEmpty()) {
                System.out.println("yes");
            }else {
                System.out.println("no");
            }
        }
    }
}

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

'문제풀이 > 백준 문제' 카테고리의 다른 글

BackJoon_11866 요세푸스 문제0  (0) 2023.09.13
BackJoon_18258 큐2  (0) 2023.09.12
BackJoon_10773 제로  (0) 2023.09.10
BackJoon_28278 스택2  (0) 2023.09.10
BackJoon_13909 창문 닫기  (0) 2023.09.10