• 문제 링크
2504번: 괄호의 값
4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X
www.acmicpc.net
• 풀이 과정
• 풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String input = br.readLine();
Stack<Character> stk = new Stack<>();
int res = 0;
int tmp = 1;
for (int i = 0; i < input.length(); i++) {
char token = input.charAt(i);
if (token == '(') {
stk.push(token);
tmp *= 2;
} else if (token == '[') {
stk.push(token);
tmp *= 3;
} else if (token == ')') {
if (stk.empty() || stk.peek() != '(') {
res = 0;
break;
}
if (input.charAt(i - 1) == '(')
res += tmp;
stk.pop();
tmp /= 2;
} else if (token == ']') {
if (stk.empty() || stk.peek() != '[') {
res = 0;
break;
}
if (input.charAt(i - 1) == '[')
res += tmp;
stk.pop();
tmp /= 3;
}
}
if (!stk.empty())
res = 0;
bw.write(String.valueOf(res));
bw.flush();
}
}'Problem Solving > Baekjoon' 카테고리의 다른 글
| [백준] 1003 피보나치 함수 - Dynamic Programming / Java (0) | 2022.11.30 |
|---|---|
| [백준] 2493 탑 - Data Structure / Java (0) | 2022.11.29 |
| [백준] 3986 좋은 단어 - Data Structure / Java (0) | 2022.11.27 |
| [백준] 11899 괄호 끼워넣기 - Data Structure / Java (0) | 2022.11.26 |
| [백준] 1325 효율적인 해킹 - Graph Theory / Java (0) | 2022.11.25 |
댓글