https://www.acmicpc.net/problem/2504
2504λ²: κ΄νΈμ κ°
4κ°μ κΈ°νΈ β(β, β)β, β[β, β]βλ₯Ό μ΄μ©ν΄μ λ§λ€μ΄μ§λ κ΄νΈμ΄ μ€μμ μ¬λ°λ₯Έ κ΄νΈμ΄μ΄λ λ€μκ³Ό κ°μ΄ μ μλλ€. ν μμ κ΄νΈλ‘λ§ μ΄λ£¨μ΄μ§ β()βμ β[]βλ μ¬λ°λ₯Έ κ΄νΈμ΄μ΄λ€. λ§μΌ
www.acmicpc.net
λ¬Έμ
4κ°μ κΈ°νΈ β(β, β)β, β[β, β]βλ₯Ό μ΄μ©ν΄μ λ§λ€μ΄μ§λ κ΄νΈμ΄ μ€μμ μ¬λ°λ₯Έ κ΄νΈμ΄μ΄λ λ€μκ³Ό κ°μ΄ μ μλλ€.
- ν μμ κ΄νΈλ‘λ§ μ΄λ£¨μ΄μ§ β()βμ β[]βλ μ¬λ°λ₯Έ κ΄νΈμ΄μ΄λ€.
- λ§μΌ Xκ° μ¬λ°λ₯Έ κ΄νΈμ΄μ΄λ©΄ β(X)βμ΄λ β[X]βλ λͺ¨λ μ¬λ°λ₯Έ κ΄νΈμ΄μ΄ λλ€.
- Xμ Y λͺ¨λ μ¬λ°λ₯Έ κ΄νΈμ΄μ΄λΌλ©΄ μ΄λ€μ κ²°ν©ν XYλ μ¬λ°λ₯Έ κ΄νΈμ΄μ΄ λλ€.
μλ₯Ό λ€μ΄ β(()[[]])βλ β(())[][]β λ μ¬λ°λ₯Έ κ΄νΈμ΄μ΄μ§λ§ β([)]β λ β(()()[]β μ λͺ¨λ μ¬λ°λ₯Έ κ΄νΈμ΄μ΄ μλλ€. μ°λ¦¬λ μ΄λ€ μ¬λ°λ₯Έ κ΄νΈμ΄ Xμ λνμ¬ κ·Έ κ΄νΈμ΄μ κ°(κ΄νΈκ°)μ μλμ κ°μ΄ μ μνκ³ κ°(X)λ‘ νμνλ€.
- β()β μΈ κ΄νΈμ΄μ κ°μ 2μ΄λ€.
- β[]β μΈ κ΄νΈμ΄μ κ°μ 3μ΄λ€.
- β(X)β μ κ΄νΈκ°μ 2Γκ°(X) μΌλ‘ κ³μ°λλ€.
- β[X]β μ κ΄νΈκ°μ 3Γκ°(X) μΌλ‘ κ³μ°λλ€.
- μ¬λ°λ₯Έ κ΄νΈμ΄ Xμ Yκ° κ²°ν©λ XYμ κ΄νΈκ°μ κ°(XY)= κ°(X)+κ°(Y) λ‘ κ³μ°λλ€.
μλ₯Ό λ€μ΄ β(()[[]])([])β μ κ΄νΈκ°μ ꡬν΄λ³΄μ. β()[[]]β μ κ΄νΈκ°μ΄ 2 + 3Γ3=11 μ΄λ―λ‘ β(()[[]])βμ κ΄νΈκ°μ 2Γ11=22 μ΄λ€. κ·Έλ¦¬κ³ β([])βμ κ°μ 2Γ3=6 μ΄λ―λ‘ μ 체 κ΄νΈμ΄μ κ°μ 22 + 6 = 28 μ΄λ€.
μ¬λ¬λΆμ΄ νμ΄μΌ ν λ¬Έμ λ μ£Όμ΄μ§ κ΄νΈμ΄μ μ½κ³ κ·Έ κ΄νΈκ°μ μμμ μ μνλλ‘ κ³μ°νμ¬ μΆλ ₯νλ κ²μ΄λ€.
μ λ ₯
첫째 μ€μ κ΄νΈμ΄μ λνλ΄λ λ¬Έμμ΄(μ€νΈλ§)μ΄ μ£Όμ΄μ§λ€. λ¨ κ·Έ κΈΈμ΄λ 1 μ΄μ, 30 μ΄νμ΄λ€.
μΆλ ₯
첫째 μ€μ κ·Έ κ΄νΈμ΄μ κ°μ λνλ΄λ μ μλ₯Ό μΆλ ₯νλ€. λ§μΌ μ λ ₯μ΄ μ¬λ°λ₯΄μ§ λͺ»ν κ΄νΈμ΄μ΄λ©΄ λ°λμ 0μ μΆλ ₯ν΄μΌ νλ€.
νμ΄
(1)
μ°μ κ΄νΈκ° μ λλ‘ λμ΄μλκ°λ₯Ό νλ¨ν΄μ μλκ²½μ° 0μ΄ λλλ‘ λ§λ λ€
νμνλ€λ©΄ μ°Έκ³
(2)
λ³Έ λ¬Έμ λ "λΆλ°°λ²μΉ"μ λμμ νλ©΄μ νΈλ λ¬Έμ λΌκ³ μκ°νλ©΄ νΈνλ€
κ΄νΈκ° μ΄λ¦΄λλ§λ€ κ·Έ μμ μμλ€μ κ³±ν΄μ§ κ²μ 미리 mul μ΄λΌλ λ³μμ κ³±ν΄λλκ²μ΄λ€
(3)
κ΄νΈκ° λ«νλ©΄
1. μλ λ°λ‘ μμ μ§μ΄ μλ κ²½μ° -> μμ (2λ 3) μΈ κ²½μ°μ΄λ―λ‘ mulμ μλ κ³Ό κ³±ν΄μ Έμ ans μ λν΄μ§
2. 1μ΄ μλκ²½μ° -> μμλ₯Ό ν¬ν¨νκ³ μλ κ΄νΈμ΄λ―λ‘ κ·Έλ₯ μμ ν λ«νλ€
( mulμ λ³ΈμΈ μ§μ΄ μ΄λ¦¬λ©΄μ κ³±ν΄λμ λΆλΆμ λλκΈ°λ‘ μμμν€λ©΄μ μμ ν λ λκΈ° (pop) )
// Authored by : seondal
// Co-authored by : -
//#include <bits/stdc++.h>
#include <iostream>
#include <stack>
using namespace std;
int ans;
stack<char> s;
int main() {
int ans = 0;
int mul = 1;
string input;
cin >> input;
for(int i=0; i<input.size(); i++){
if(input[i] == '(') {
// (2)
mul *= 2;
s.push('(');
}
else if(input[i] == ')') {
if(s.empty() || s.top() != '(') {
// (1)
cout << 0;
return 0;
}
// (3)
if(input[i-1] == '(') {
mul /= 2;
s.pop();
ans += mul*2;
} else {
mul /= 2;
s.pop();
}
}
else if(input[i] == '[') {
// (2)
mul *= 3;
s.push('[');
}
else if(input[i] == ']') {
if(s.empty() || s.top() != '[') {
// (1)
cout << 0;
return 0;
}
// (3)
if(input[i-1] == '[') {
mul /= 3;
s.pop();
ans += mul*3;
} else {
mul /= 3;
s.pop();
}
}
}
// (1)
if(s.empty()) cout << ans;
else cout << 0;
return 0;
}
/*
*/
'π Baaaaaarking > 0x08κ° - μ€νμ νμ© (μμμ κ΄νΈμ)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ S4][C++] 10799λ²: μ λ§λκΈ° (0) | 2022.03.06 |
---|---|
[BOJ S4][C++] λ°±μ€ 9012λ²: κ΄νΈ (0) | 2022.03.02 |
[BOJ S4][C++] 3986λ²: μ’μ λ¨μ΄ (0) | 2022.03.01 |
[BOJ S4}[C++) 4949λ²: κ· νμ‘ν μΈμ (0) | 2022.02.25 |