본문으로 바로가기
728x90
반응형

▷ 문제

괄호가 입력되면 올바른 괄호이면 “YES", 올바르지 않으면 ”NO"를 출력합니다.

(())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아니다.

* 입력

첫 번째 줄에 괄호 문자열이 입력됩니다. 문자열의 최대 길이는 30이다.

* 출력

첫 번째 줄에 YES, NO를 출력한다.

▷ 입력 예시

(()(()))(()

▷ 출력 예시

NO

▷ 풀이

import java.util.Scanner;
import java.util.Stack;

public class Main {	
    public String solution(String str){
      String answer = "YES";
      Stack<Character> stack = new Stack<>();
      
      for(char x : str.toCharArray()){
        if(x == '('){
          stack.push(x);
        } else{
          if(stack.isEmpty()){
            return "NO";
          }
          stack.pop();
        }
        
      }

      if(!stack.isEmpty()){
          return "NO";
      }
      
      return answer;
    }

    public static void main(String[] args){
        Main main = new Main();
        Scanner kb = new Scanner(System.in);

        String str = kb.next();

        kb.close();

        System.out.println(main.solution(str));
    }
  }

 

▷ 핵심 포인트

1. Stack 자료구조의 LIFO 특성을 이용합니다.

반응형