본문 바로가기
온라인저지

[BOJ] 10799번: 쇠막대기

by plzfday 2018. 7. 26.

https://www.acmicpc.net/problem/10799

괄호가 닫히는게 막대기의 끝인지 레이저인지 잘 구분해야 한다.

'('일 땐 계속 스택에 집어넣는다. ')'일 땐 무조건 pop을 한다. 

레이저일 땐, 여태까지 스택에 넣었던 개수 즉, 나열된 막대기의 개수를 더한다.

막대기의 끝에선 항상 막대기 조각 하나만 남기 때문에 그것의 개수(1)을 더한다.

#include <stdio.h>
#include <string.h>

int idx;

int main()
{
    int result = 0;
    char st[100000];

    scanf("%s", st);

    for (int i = 0; i < strlen(st); ++i)
    {
        if (st[i] == '(')
        {
            idx++;
        }
        else if (st[i] == ')' && st[i - 1] == '(')
        {
            idx--;
            result += idx;
        }
        else if (st[i] == ')')
        {
            idx--;
            result++;
        }
    }
    printf("%d\n", result);

    return 0;
}

 

'온라인저지' 카테고리의 다른 글

[BOJ] 10539번: 수빈이와 수열  (0) 2018.07.26
[BOJ] 2075번: N번째 큰 수  (0) 2018.07.26
[BOJ] 1159번: 농구 경기  (0) 2018.07.26
[BOJ] 9012번: 괄호  (0) 2018.07.26
[BOJ] 10845번: 큐  (0) 2018.07.26
[BOJ] 10828번: 스택  (0) 2018.07.26

댓글