PS/Baekjoon Online Judge

[백준 4949] 균형잡힌 세상 [C]

kimyoungrok 2021. 7. 29. 17:34

백준 - 4949


풀이

'(', '[' 일때는 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

'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