PS/Baekjoon Online Judge

[백준 10799] 쇠막대기 [C]

kimyoungrok 2021. 7. 11. 20:13

백준 - 10799


풀이

입력된 괄호이후 막대기의 개수를 top라고 하고, 다음과 같은 조건에 의해 result에 막대기의 개수를 더해주면 된다.

  • ')'이전에 '('가 입력되었으면, 쇠막대기가 아니라 레이저이므로 --top한 값을 result에 더해준다.
  • 쇠막대기를 의미하는 ')'만 입력 되었으면, 쇠막대기의 끝 부분에 도달한 것 이기 때문에 1개만 더하고, 현재 막대기의 개수를 1개 감소시킨다.

소스코드

#include <stdio.h>
#define MAX 100001
int main(){
    char stack[MAX];
    int top = 0, result = 0;
    scanf("%s", stack);
    for (int i = 0; stack[i] != '\0'; i++)
        if (stack[i] == '(')
            top++;
        else{
            if (i > 0 && stack[i-1] == '(')
                result += --top;
            else{
                result++;
                top--;
            }
        }
    printf("%d\n", result);
}

출처

 

10799번: 쇠막대기

여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저

www.acmicpc.net

 

'PS > Baekjoon Online Judge' 카테고리의 다른 글

[백준 10171] 고양이 [C]  (0) 2021.07.12
[백준 10718] We love kriii [C]  (0) 2021.07.12
[백준 10798] 세로읽기 [C]  (0) 2021.07.11
[백준 10797] 10부제 [C]  (0) 2021.07.11
[백준 8958] OX퀴즈 [C]  (0) 2021.07.11