본문 바로가기
온라인저지

[BOJ] 2504번: 괄호의 값

by plzfday 2018. 7. 27.

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

댓글