728x90
풀이
'(', '[' 일때는 stack에 삽입해주고, ')', ']' 일때, top이 -1이 아니고, stack[top]에 '(', '['가 있을때, top를 감소한다.
만약 그렇지 않다면, "] ["나 ") (" 처럼 짝이 안맞는 경우이므로 출력을 위해 top값을 -2로 갱신하고 반복문을 빠져나온다.
소스코드
#include <stdio.h>
#define MAX 101
int main(){
char str[MAX], stack[MAX];
while (1){
gets(str);
if (str[0] == '.') break;
int top = -1;
for (int i = 0; str[i] != '.'; i++){
if (str[i] == '(' || str[i] == '[')
stack[++top] = str[i];
else if (str[i] == ')')
if (top > -1 && stack[top] == '(')
--top;
else {
top = -2;
break;
}
else if (str[i] == ']')
if (top > -1 && stack[top] == '[')
--top;
else{
top = -2;
break;
}
}
puts(top == -1 ? "yes" : "no");
}
}
출처
4949번: 균형잡힌 세상
하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마
www.acmicpc.net
728x90
'PS > Baekjoon Online Judge' 카테고리의 다른 글
[백준 1059] 좋은 구간 [C] (0) | 2021.07.31 |
---|---|
[백준 7568] 덩치 [C] (0) | 2021.07.30 |
[백준 2805] 나무 자르기 [C] (0) | 2021.07.29 |
[백준 01016] 제곱 ㄴㄴ 수 [C] (0) | 2021.07.29 |
[백준 2108] 통계학 [C] (0) | 2021.07.28 |