본문 바로가기

Baekjoon

[Java] 백준 4949번 : 균형잡힌 세상

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

 

4949번: 균형잡힌 세상

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

www.acmicpc.net

[접근]

이 문제는 9012번 문제와 살짝 비슷하다. (https://www.acmicpc.net/problem/9012) 이 문제와 다른점이 있다면 이번 문제에는 괄호의 종류가 늘었다는 것이다. 즉 신경써줘야 할 점이 생긴것이다.

 

1) ' ( [ ) ]  ' 이와 같이 괄호가 성립이 안되는 문장이면 안된다. 

-> '(' or  '[' 는 오는 순서대로 저장시킨다. ')' or ']' 를 만나면 스택의 가장 위에 있는 문자와 비교하여 괄호의 짝이 맞는지 비교해야한다.

2 ) '  . ' 이 있는 문장도 옳은 문장이다.

 

[코드]

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

public class Main4949 {

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

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str;
        StringBuilder sb = new StringBuilder();


        while (true){

            int index=0; // stack 위치를 저장하기 위한 변수
            char [] stack = new char[100];
            str = br.readLine();

            if (str.equals(".")){ // "." 입력의 끝
                break;
            }

            for (Byte b : str.getBytes()){

              if(b == '('){
                  stack[index] =')';
                  index++;

              }else if(b == '['){
                  stack[index] = ']';
                  index++;
                }
              else if (b == ')'|| b==']'){
                  if (index > 0 && stack[index-1]==b){
                      index--; //pop
                  }else{
                      index=-1;
                      break;
                  }
              }
                }

            if (index ==0){
                sb.append("yes\n");
            }else {
                sb.append("no\n");
            }


        }
            System.out.print(sb);
        }

    }

'Baekjoon' 카테고리의 다른 글

[Java] 백준 2751번 : 수 정렬하기 2  (0) 2022.01.15
[Java] 백준 10816번 : 숫자 카드 2  (0) 2022.01.15
[Java] 백준 1874번 : 스택 수열  (0) 2022.01.15
[Java] 백준 10828번 : 스택  (0) 2022.01.14
[Java] 백준 9012번 : 괄호  (0) 2022.01.14