이것 또한 단순구현입니다. ()괄호 두개가 모두 만난다면 식이 성립한다는 아이디어와 ')'이게 '(' 보다 한번이라도 먼저 나온다면 그 식은 성립하지 않는다는 생각을 하면 쉽게 풀리는 문제죠. 저는 저 괄호식을 문자열로 생각하지 않고 '('와 ')'의 개수를 생각했습니다. 연산이 끝났을 때 두 괄호의 개수가 같다면 전부 다 성립한 것이고, 한 번이라도 ')'의 개수가 많다면 바로 실행을 멈추고 "NO"를 출력하여 문제를 해결했습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 |
#include <stdio.h>
#include <string.h>
int main() {
int n,a=0,b=0,i;
char str[50];
scanf("%d",&n);
while(n--){
scanf("%s",str);
for(i = 0; i < strlen(str); i++){
if(str[i]=='(')
a++;
else if(str[i]==')')
b++;
if(a<b)
break;
}
if(a==b) printf("YES\n");
else printf("NO\n");
a=0;
b=0;
}
return 0;
} |
cs |
'Baekjoon online judge 문제 풀이' 카테고리의 다른 글
[BOJ 14646번] 욱제는 결정장애야!! (0) | 2018.05.01 |
---|---|
[BOJ 14647번] 준오는 조류혐오야!! (0) | 2018.05.01 |
[BOJ 10828번] 스택 (0) | 2018.02.22 |
[BOJ 11727번] 2*n 타일링2 (0) | 2018.02.22 |
[BOJ 1924번] 2007년 (0) | 2018.02.11 |