https://www.acmicpc.net/problem/2504
나는 이런 문제가 나올 때마다 내 코딩 실력에 너무 자괴감이 든다... 열심히 해야지...
그 간단한 temp 변수 하나를 생각 못해서 뻘짓을 하고 있었다니!!! 말 그대로 tmp는 괄호가 닫힐 때까지 임시로 값을 저장해 주는 변수다.
#include <cstdio>
#include <stack>
using namespace std;
char s[31];
int val, tmp = 1;
stack<char> stk;
int main()
{
scanf("%s", s);
for (int i = 0; s[i]; ++i)
{
switch (s[i])
{
case '(':
tmp *= 2;
stk.push('(');
break;
case ')':
if (stk.empty())
return !printf("0");
if (s[i - 1] == '(')
val += tmp;
if (stk.top() == '(')
stk.pop();
tmp /= 2;
break;
case '[':
tmp *= 3;
stk.push('[');
break;
case ']':
if (stk.empty())
return !printf("0");
if (s[i - 1] == '[')
val += tmp;
if (stk.top() == '[')
stk.pop();
tmp /= 3;
break;
}
}
printf("%d\n", !stk.empty() ? 0 : val);
return 0;
}
'온라인저지' 카테고리의 다른 글
[BOJ] 11383번: 뚊 (0) | 2018.08.02 |
---|---|
[BOJ] 4999번: 아! (0) | 2018.08.02 |
[BOJ] 1766번: 문제집 (0) | 2018.07.27 |
[BOJ] 5845번: Perimeter (0) | 2018.07.27 |
[BOJ] 10540번: KLOPKA (0) | 2018.07.27 |
[BOJ] 13900번: 순서쌍의 곱의 합 (0) | 2018.07.27 |
댓글