728x90
풀이
입력된 괄호이후 막대기의 개수를 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
728x90
'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 |