π» Coding Problems Solving/Stack | Queue
[BOJ 2504] κ΄νΈμ κ°
Kim_dev
2022. 6. 26. 15:42
[BOJ 2504] κ΄νΈμ κ°
1. λ¬Έμ : Link
(μ) X2
[μ] X3
κ°μ κ΄νΈ μμ +
ex) ( ( ) [ [ ] ] )
[[]] = [] μμ [] = 3 X 3
() + [[]] = 2 + 9 = 11
(()+[[]]) = 11 X 2 = 22
2. νμ΄
μ€ννλ μμΌλ‘ caseλ‘ κΉλνκ² μ²λ¦¬νκΈ°
ν΄λΉ κ΄νΈ μμμ κ³±μ μ΄ μ μ§λλ κ°λ μ μ΄λ»κ² ꡬννλμ§κ° μ€μ
μ¬κΈ°μλ (,[κ° μΆκ°λ λλ§λ€ κ°μ κ³±ν΄μ£Όκ³ -> μ μ§
κ·Έλ¬λ€κ° ),]κ° λμμλ λλ μ£ΌκΈ°
()κ°μ μμ΄ λμ¬λ κ²°κ΅ μ΅μ’ κ°μ΄ κ²°κ³Όμ λν΄μ§λ κ°λ
3. μ½λ
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String in = scanner.next();
int mul = 1;
int result = 0;
Stack<Character> stack = new Stack<>();
for (int i = 0; i < in.length(); i++) {
switch (in.charAt(i)) {
case '(':
stack.push('(');
mul *= 2;
break;
case '[':
stack.push('[');
mul *= 3;
break;
case ')':
if (stack.isEmpty() || stack.peek() != '(') {
result = 0;
break;
}
if (in.charAt(i - 1) == '(') result += mul;
stack.pop();
mul /= 2;
break;
case ']':
if (stack.isEmpty() || stack.peek() != '[') {
result = 0;
break;
}
if (in.charAt(i - 1) == '[') result += mul;
stack.pop();
mul /= 3;
break;
}
}
System.out.println(!stack.isEmpty() ? 0 : result);
}
}