[JAVA/2504번] 괄호의 값*

고지훈·2021년 12월 30일
1

Algorithm

목록 보기
63/68
post-thumbnail

문제


입력 및 출력


풀이

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

class Main {  
  public static void main(String args[]) throws Exception { 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    // 괄호열을 쪼개 배열에 넣는다.
    char[] input = br.readLine().toCharArray();

    // 후입선출 자료구조 스택
    Stack<Character> stack = new Stack<>();

    // 결과 값을 위한 변수, 계산을 위한 변수
    int result = 0;
    int value = 1;

    for(int i = 0; i < input.length; i++) {
      // '('일 경우 value변수에 2를 곱한다.
      if(input[i] == '(') {
        stack.push(input[i]);
        value *= 2;
      }
      // '['일 경우 value변수에 3을 곱한다.
      if(input[i] == '[') {
        stack.push(input[i]);
        value *= 3;
      }
      // ')'일 경우
      if(input[i] == ')') {
        if(stack.isEmpty() || stack.peek() != '(') {
          break;
        }else if(input[i-1] == '(') {
          result += value;
        }
        stack.pop();
        value /= 2;
      }else if(input[i] == ']') {
        if(stack.isEmpty() || stack.peek() != '[') {
          break;
        }else if(input[i-1] == '[') {
          result += value;
        }
        stack.pop();
        value /= 3;
      }
    }
    if(stack.isEmpty() == false) {
      System.out.println(0);
    }else {
      System.out.println(result);
    }
  } 
}

결과 및 해결방법

[결과]

profile
"계획에 따르기보다 변화에 대응하기를"

0개의 댓글