boj)4949 - 균형잡힌 세상

2020. 10. 13. 17:49PS/boj

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

public class boj_4949 {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static StringBuilder sb = new StringBuilder();

    public static void main(String[] args) throws IOException {
        while (true) {
            String input = br.readLine();
            if (input.equals(".")) {
                break;
            }
            sb.append(solve(input) ? "yes" : "no").append("\n");
        }

        System.out.println(sb.toString());
    }

    public static boolean solve(String input) {
        Stack<Character> stack = new Stack<>();
        for (int i = 0; i < input.length(); i++) {
            char c = input.charAt(i);
            switch (c) {
                case '(':
                case '[':
                    stack.push(c);
                    break;
                case ')':
                    if (stack.isEmpty() || stack.peek() != '(') {
                        return false;
                    }
                    stack.pop();
                    break;
                case ']':
                    if (stack.isEmpty() || stack.peek() != '[') {
                        return false;
                    }
                    stack.pop();
                    break;
                default:
                    break;
            }
        }
        return stack.isEmpty();
    }
}

 

- 깔끔하게 잘 푼거 같아서 다른풀이 참조함

 

- 입력받을때 끝에 . 이면 break;

- stack에 여는괄호 쌓기 

- 닫는괄호가 나오면 스택 제일 위에있는 값과 비교, 스택이 비어있는 경우 예외 처리

- 끝까지 반복문을 돌고 스택이 비었는가 ? 를 리턴함

- 위에서 false에 안걸리고 스택이 비었다면 yes, 위에 걸리지는 않았지만 스택이 비지 않았다면 false

'PS > boj' 카테고리의 다른 글

boj)4889 - 안정적인 문자열  (0) 2020.10.14
boj)2504 - 괄호의 값  (0) 2020.10.14
boj)6198 - 옥상 정원 꾸미기  (0) 2020.10.13
boj)2164 - 카드2  (0) 2020.10.12
boj)2493 - 탑  (0) 2020.10.12