온라인저지
[BOJ] 10799번: 쇠막대기
plzfday
2018. 7. 26. 19:32
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;
}