-
[백준/BOJ] 9012번 : 괄호 _C언어알고리즘/백준(BOJ) 2022. 2. 13. 19:54728x90반응형
>문제
>접근방법
괄호를 보니 작년에 배웠던 자료구조에서 스택이 떠올랐다. 스택 사용법을 보다가 top 개념만 차용해 왔다. 여는 괄호 '('를 만나면 top에 1을 더해주고 닫는 괄호 ')'를 만나면 top에 1을 빼준다. 0이 되면 맞고, 음수가 되면( 닫는 괄호가 더 많은 시점에) break를 건다.
>알고리즘
1. T를 num에 입력받는다. num만큼 반복 수행
2.top은 0으로 시작.
3. ( 를 만나면 top++, ) 를 만나면 top--.
4. 도중에 top이 음수가 되면 break로 빠져나온다.
5. top이 0일 경우에만 YES 출력
>코드
#include <stdio.h> /* 알고리즘 괄호를 열면 top++ 닫으면 top-- top이 0이면 YES 음수 혹은 그 외에는 NO */ int num; char str[100]; int i, j, top; int main(void){ scanf("%d", &num); for(i=0; i<num; i++){ scanf("%s", str); top = 0; for(j=0; str[j] != 0; j++){ if(str[j] == '('){ top++; //push } else if(str[j] == ')'){ top--; //pop } if(top < 0){ break; } } if(top == 0){ printf("YES\n"); } else{ printf("NO\n"); } } return 0; }
>결과
>결론
풀고 보니 cpp로 stack 라이브러리를 사용하면 더 편하다는 쓰앵님의 말씀이 있었다. 오늘도 삽질을 두번이나 했군. 신난다.
LIST'알고리즘 > 백준(BOJ)' 카테고리의 다른 글
[백준/BOJ] 3986번 : 좋은 단어 _C/C++ (0) 2022.02.15 [백준/BOJ] 10773번 : 제로 _C/C++ (0) 2022.02.14 [백준/BOJ] 10798번 : 세로읽기 _C언어 (0) 2022.02.13 [백준/BOJ] 1652번 : 누울 자리를 찾아라 _C언어 (0) 2022.02.10 [백준/BOJ] 5555번 : 반지 _C언어 (0) 2022.02.04