문제
입력 및 출력
풀이
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);
}
}
}
결과 및 해결방안
[결과]
[해결방안]