티스토리 뷰

문제


입력 및 출력


풀이

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);
    }
  } 
}

결과 및 해결방안

[결과]
[해결방안]

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

[1141/Java] 접두사  (0) 2021.12.31
[14888/Java] 연산자 끼워넣기  (0) 2021.12.31
[3085/Java] 사탕 게임  (0) 2021.12.30
[1789/Java] 수들의 합  (0) 2021.12.20
[2693/Java] N번째 큰 수  (0) 2021.12.17
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함