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