https://www.acmicpc.net/problem/4949
어제 푼 문제랑 거의 비슷해서 쉽게 접근했는데, 2번 틀렸다.
-> https://www.acmicpc.net/problem/9012
그래서 )랑 ]도 조건을 만족하지 않으면 스택에 넣었다. 3트만에 성공했다.
어떻게 하긴.. 원리는 매우 비슷했다. 다만 내 코드가 더 장황했을 뿐.
#include <stdio.h>
char s[101];
int a[101], l;
int main (void)
{
int i, p;
while (gets(s))
{
if (s[0] == '.') break;
l = p = 0;
for (i = 0; s[i]; i++)
{
switch (s[i])
{
case '(': a[l++] = 1; break;
case ')': if (!l || a[--l] != 1) p = 1; break;
case '[': a[l++] = 2; break;
case ']': if (!l || a[--l] != 2) p = 1;
}
if (p) break;
}
printf ("%s\n", p || l ? "no" : "yes");
}
}