스택을 활용한 문제이다.
괄호 안에 들어간 원자들을 스택으로 쌓아주고 괄호를 닫을 때 tmp에 그 값을 저장해준다.
숫자가 나왔을 때 tmp * (N - 1)을 해주는 것이 핵심인 것 같다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int[] stack = new int[100];
int tmp = 0;
int size = 0;
for(int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if(c == 'H') {
tmp = 1;
stack[size] += 1;
} else if (c == 'C') {
tmp = 12;
stack[size] += 12;
} else if (c == 'O') {
tmp = 16;
stack[size] += 16;
} else if (c == '(') {
size++;
stack[size] = 0;
} else if (c == ')') {
tmp = stack[size];
stack[size] = 0;
size--;
stack[size] += tmp;
} else if(c > '1' && c <= '9') {
stack[size] += tmp * (c - '1');
}
}
System.out.println(stack[0]);
}
}