๋ฌธ์ ๋งํฌ: www.acmicpc.net/problem/2504
ํ์ด
๋ถ๋ฐฐ ๋ฒ์น์ ์ฌ์ฉํด์ ๋ฌธ์ ๋ฅผ ํ ์ ์๋ค. ( ( ) [ [ ] ] ) ์ ๊ฒฝ์ฐ์ 2x(2+3x3)์ผ๋ก ๊ณ์ฐ๋๋๋ฐ, ์ด๋ ๊ฒฐ๊ตญ (2x2) + (2x3x3)๊ณผ ๊ฐ๋ค. ์ผ์ชฝ ๊ดํธ๊ฐ ๋์ค๋ฉด temp์ 2๋ 3์ ๊ณฑํ ๋ค ์คํ์ push ํ๊ณ , ์ค๋ฅธ์ชฝ ๊ดํธ๊ฐ ๋์ค๋ฉด temp๋ฅผ 2๋ 3์ผ๋ก ๋๋ ๋ค ์คํ์ pop ํ๋ค. ์ด๋ ( ( ) [ [ ] ] ) ํ์๋ ๊ดํธ์ฒ๋ผ ๊ดํธ ๊ฐ์ด '( )' ๋๋ '[ ]'์ผ ๊ฒฝ์ฐ์๋ temp ๊ฐ์ ๋๋ ์ฃผ๊ธฐ ์ ์ answer์ ๋ํ๋ค.
temp: answer์ ๋ํ๊ธฐ ์ ์ค๊ฐ๊ฐ์ ๊ณ์ฐํ๊ธฐ ์ํ ๋ณ์ (initial value: 1)
1. case ' ( '
temp์ 2๋ฅผ ๊ณฑํ๊ณ ์คํ์ ' ( ' ๋ฅผ push
2. case ' ) '
1) ์คํ์ด ๋น์ด์๊ฑฐ๋ ์คํ top์ด ' ( ' ๊ฐ ์๋ ๊ฒฝ์ฐ
์ฌ๋ฐ๋ฅด์ง ๋ชปํ ๊ดํธ์ด์ด๋ฏ๋ก answer = 0; break;
2) ์ด์ ๋ฌธ์์ด์ด ' ( ' ์ผ ๊ฒฝ์ฐ
๊ดํธ ๊ฐ์ด '( )' ์ด๋ฏ๋ก ๊ณ์ฐ๋ temp ๊ฐ์ answer์ ๋ํด์ฃผ๊ณ temp๋ฅผ 2๋ก ๋๋๋ค. ์คํ์ pop ํ๋ค.
3) ์ด์ ๋ฌธ์์ด์ด ' ( ' ๊ฐ ์๋ ๊ฒฝ์ฐ
์ ์ผ ์์ชฝ ๊ดํธ, ์ฆ '( )' ํํ๊ฐ ์๋๋ฏ๋ก ์ด๋ฏธ answer์ ๊ฐ์ด ๋ํด์ ธ ์๋ ์ํ์ด๋ค. ๋ฐ๋ผ์ answer์ ๊ฐ์ ๋ํ์ง ์๊ณ temp๋ฅผ 2๋ก ๋๋๊ณ ์คํ pop์ ํ๋ค.
3, 4. case ' [ ', ' ] '
1, 2์ ์ ์ฌํ๊ฒ ์ฒ๋ฆฌํ๋ค.
๋ง์ง๋ง์ผ๋ก ๋ง์ฝ ๋ฌธ์์ด์ ๋ค ์ฝ์๋๋ฐ ์คํ์ด ๋น์ด์์ง ์๋ค๋ฉด, ์ฌ๋ฐ๋ฅด์ง ๋ชปํ ๊ดํธ์ด์ด๋ฏ๋ก answer = 0์ ๋์ ํ๋ค.
์์ค์ฝ๋
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
//2504 ๊ดํธ์ ๊ฐ
#include <iostream>
#include <string>
#include <stack>
using namespace std;
string str;
stack<char> s;
int main(void) {
cin >> str;
int answer = 0, temp = 1;
for(int i = 0; i < str.length(); i++) {
if(str[i] == '(') {
temp *= 2;
s.push('(');
}
else if(str[i] == '[') {
temp *= 3;
s.push('[');
}
else if(str[i] == ')') {
if(s.empty() || s.top() != '(') { //์ฌ๋ฐ๋ฅด์ง ๋ชปํ ๊ดํธ์ด
answer = 0;
break;
}
if(str[i-1] == '(') {
answer += temp;
temp /= 2;
s.pop();
}
else {
temp /= 2;
s.pop();
}
}
else if(str[i] == ']') {
if(s.empty() || s.top() != '[') { //์ฌ๋ฐ๋ฅด์ง ๋ชปํ ๊ดํธ์ด
answer = 0;
break;
}
if(str[i-1] == '[') {
answer += temp;
temp /= 3;
s.pop();
}
else {
temp /= 3;
s.pop();
}
}
}
if(!s.empty()) answer = 0; //์ฌ๋ฐ๋ฅด์ง ๋ชปํ ๊ดํธ์ด
cout << answer << "\n";
return 0;
}
|
cs |
๊ณต๋ถํ ๊ฒ์ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. ์์ ํ ๋ถ๋ถ์ด ์๋ค๋ฉด ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค :)
'Algorithm > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค(BOJ) / Python] 1946๋ฒ: ์ ์ ์ฌ์ (0) | 2021.03.09 |
---|---|
[๋ฐฑ์ค BOJ / Python ] 14916๋ฒ: ๊ฑฐ์ค๋ฆ๋ (0) | 2021.03.08 |
[๋ฐฑ์ค BOJ / C++] 1541๋ฒ: ์์ด๋ฒ๋ฆฐ ๊ดํธ (0) | 2020.12.29 |
[๋ฐฑ์ค BOJ / C++] 1138๋ฒ: ํ ์ค๋ก ์๊ธฐ (0) | 2020.12.29 |
[๋ฐฑ์ค BOJ / C++] 2217๋ฒ: ๋กํ (0) | 2020.12.28 |