백준

백준 2504 괄호의 값(Java)

Park DJ 2023. 2. 19. 03:25

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

 

2504번: 괄호의 값

4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X

www.acmicpc.net


 

 

Java 코드

 


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

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    Stack<Character> stack = new Stack<>();

    int sum = 0;
    int tmp = 1;
    String str = sc.nextLine();
   
    for(int i = 0; i < str.length(); i++) {
      char c = str.charAt(i);
      if(c == '(') {
        stack.push(c);
        tmp *= 2;
      }
      else if(c == '[') {
        stack.push(c);
        tmp *= 3;
      }
      
      else if(c == ')') {
        if(stack.isEmpty() || stack.peek() != '(') {
          sum = 0;
          break;
        }
        else if(str.charAt(i - 1) == '(') sum += tmp;
        stack.pop();
        tmp /= 2;
      }
      
      else if(c == ']') {
        if(stack.isEmpty() || stack.peek() != '[') {
          sum = 0;
          break;
        }
        else if(str.charAt(i - 1) == '[') sum += tmp;
        stack.pop();
        tmp /= 3;
      }
      
    }

    if(!stack.isEmpty()) System.out.println(0);
    else System.out.println(sum);
  }
}