PS/Baekjoon Online Judge
[백준 10799] 쇠막대기 [C]
kimyoungrok
2021. 7. 11. 20:13
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