반응형
SW 역량테스트 합격하기 A형 강의 오픈!! (인프런 바로가기)
올바른 괄호인지 체크하는 문제이다.
실제로 작성하는 cpp 코드를 생각하면 쉽다.
코드를 작성할 때, 열린 괄호 '('를 썼다면 반드시 닫힌 괄호 ')'를 써야한다.
즉, 열린 괄호를 +1, 닫힌 괄호를 -1이라고 생각한다면 마지막에는 반드시 0이 되어야 한다.
열린 괄호 뒤에는 다시 열린 괄호 또는 닫힌 괄호가 와야한다.
그러므로, 괄호가 완전히 닫히기 전에 닫힌 괄호가 열린 괄호보다 많아서는 안된다.
#include <stdio.h>
int main(void)
{
int T;
scanf("%d", &T);
for (int tc = 0; tc < T;tc++)
{
int i, flag, sp;
char str[50 + 5];
flag = sp = i = 0;
scanf("%s", str);
while (str[i])
{
if (str[i] == '(') sp++; /* 열렸으면 + */
else --sp; /* 닫혔으면 - */
if (sp < 0) /* 완전히 닫히기 전 까지 닫힌 괄호가 많은지 체크 */
{
flag = 1;
break;
}
i++;
}
if (flag == 1 || sp != 0) printf("NO\n");
else printf("YES\n");
}
return 0;
}
반응형
'알고리즘 > BAEKJOON' 카테고리의 다른 글
BOJ 14501, 15486 : 퇴사, 퇴사 2 (0) | 2021.02.15 |
---|---|
BOJ 10866 : 덱 (0) | 2021.02.08 |
BOJ 10845, 18258 : 큐, 큐2 (0) | 2021.02.07 |
BOJ 10773 : 제로 (0) | 2021.02.06 |
BOJ 10828 : 스택 (3) | 2021.02.05 |
댓글