2019 ChickenReallyGood

5 The Deeper, The Better

 

https://www.acmicpc.net/contest/view/434

불러오는 중입니다...

 

백준 대회 문제를 몇 개 풀어보고자 했다.

아, 근데 이거 하나 밖에 못풀었다.

이 문제를 풀고나서 에니그마 구현하는 문제를 풀고 있었는데, 이게 좀 어려워서 대회 끝날 때까지 그거 하나를 못 풀고 있었던 것이다.

뭐, 일단 그 이야기는 뒤로 하고, 이번 문제는 (x) {x} [x]를 기준으로 1,2,3점을 부여, 즉, ((x))은 2점, 이런느낌이다.

입력은 올바른 값만 들어온다.

X와 Y가 옳은 값이라면, XY도 옳은 값이다.

숫자가 겹쳐서 들어오는 경우는 없다.

그래서 값의 가중이 가장 큰 녀석의 값을 출력하면 되는데, 간단히 스택에 쌓아서 풀어보았다.

 

#include <stdio.h>
char arr[100];
int t,m=0,top=-1;
void push() {top++; arr[top]=t;}
void pop() {top--;}
void maxt() {
    int s=0,i=0;
    for(; i<=top; i++) {
        if(arr[i]=='(') s++;
        else if(arr[i]=='{') s+=2;
        else s+=3;
    }
    if(s>m) m=s;
}
int main()
{
    while(~(t=getchar())) {
        if(t=='(' || t=='{' || t=='[') push();
        else if(t==')' || t=='}' || t==']') pop();
        else maxt();
    }
    printf("%d", m);
}

+ Recent posts