백준 괄호 문제 풀이 https://www.acmicpc.net/problem/9012
닫는 괄호로 시작하는 경우에 어떻게 할지 예외처리를 안넣어줘서 시간이 좀 걸렸다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
using namespace std;
void check() {
char stack[50] = {0, };
int stack_idx = 0;
char* inputStr = (char*)malloc(sizeof(char) * 50);
scanf("%s", inputStr);
int lenSize = strlen(inputStr);
for (int i = 0; i < lenSize; i++) {
if (0==i && ')' == inputStr[i]) { //닫는괄호로 시작함.
printf("NO\n");
free(inputStr);
return;
}
else {
if ('(' == inputStr[i]) { //스택에 여는괄호를 넣는다
stack[stack_idx] = '(';
stack_idx++;
}
else if (')' == inputStr[i]) { // 닫는괄호 발견.
if (0 < stack_idx) { // 스택에 여는괄호가 있다면, 하나 삭제.
stack[stack_idx] = 0;
stack_idx--;
}
else {
// 여는 괄호 보다, 닫힌 괄호가 더 많음. 불완전.
printf("NO\n");
free(inputStr);
return;
}
}
}
}
//printf("stack_idx : %d", &stack_idx);
if (0 == stack_idx) {
printf("YES\n");
}
else {
printf("NO\n");
}
free(inputStr);
return;
}
int main() {
// 반복 횟수 입력 받기
int repeat = 0;
scanf("%d", &repeat);
while (repeat) {
check();
repeat--;
}
return 0;
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
카드 구매하기 백준 11052 (0) | 2020.08.13 |
---|---|
2xn 타일링2 백준 11727번 (0) | 2020.08.12 |
2xn 타일링 백준 11726번 (0) | 2020.08.12 |
분산처리 백준 1009번 c++ (0) | 2020.08.12 |
스택 백준 10828번 (0) | 2020.08.12 |