본문 바로가기
codingTest/백준

[codingTest][백준] 균형잡힌 세상

by 세류오 2026. 1. 12.

[문제링크]

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

 

[풀이]

1. 일단 한 줄 입력받는다.

2. 입력받은 줄이 "."이라면 종료(종료조건)

3. 스택을 선언한다

4. 문자열을 처음부터 끝까지 비교(.이 나오면 멈춤)

  - 열린괄호 ( 또는 [ 이면 스택에 넣는다

  - 닫힌괄호 ) 이라면

    - 스택이 비어있다(짝이없다)거나 열린괄호가 아니라면 no

    - 위 조건이 아니라면 pop

  - 닫힌괄호 ] 이라면

     - 스택이 비어있다(짝이없다)거나 열린괄호가 아니라면 no

     - 위 조건이 아니라면 pop

5. 중간에 실패 없이 다 진행했을 때 stack이 비어있다면 yes, 비어있지 않다면 no를 출력한다.

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

public class stack004949 {
    /**
     * 스택: 4949
     * 문제명: 균형잡힌 세상
     */
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line = "";

        while ((line = br.readLine()) != null) {
            if(line.equals(".")) break;

            Deque<Character> stack = new ArrayDeque<>();
            boolean flag = true;

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

                if(c == '.') { // 입력의 종료조건
                    break;
                }

                if(c == '(' || c == '[') {
                    stack.push(c);
                }
                else if (c == ')'){
                    if(stack.isEmpty() || stack.peek() != '(') {
                        flag = false;
                        break;
                    }
                    stack.pop(); // 짝이 맞으면 pop
                }
                else if (c == ']') {
                    if(stack.isEmpty() || stack.peek() != '[') {
                        flag = false;
                        break;
                    }
                    stack.pop();// 짝이 맞으면 pop
                }
            }
            if(flag && stack.isEmpty()) {
                System.out.println("yes");
            }
            else {
                System.out.println("no");
            }
        }

    }
}

 

'codingTest > 백준' 카테고리의 다른 글

[codingTest][백준] 큐2  (0) 2026.01.25
[codingTest][백준] 키로거📌  (0) 2026.01.16
[백준][DFS] 바이러스  (0) 2025.10.08
[백준] 스택(10828)  (0) 2023.03.08
[백준] 11654번 아스키 코드  (0) 2022.07.22