본문 바로가기
BaekJoon/C++

9012 : 괄호 (C)

by GrayChoi 2021. 1. 9.
반응형

 

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net


#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct {
    char data;
    struct Node *next;
} Node;

typedef struct {
    int count;
    Node *top;
} Stack;

void push(Stack *stack) {
    Node *node = (Node*)malloc(sizeof(Node));
    node->data = '(';
    node->next = stack->top;
    stack->top = node;
    stack->count++;
}

void pop(Stack *stack) {
    if(stack->top == NULL) {
        stack->count = -999;
        return;
    }
    Node *node = stack->top;
    if(node->data == '(') {
        stack->top = node->next;
        free(node);
        stack->count--;
    } else {
        stack->count = -999;
    }
}

int main() {
    int T;
    scanf("%d", &T);

    for(int i = 0; i < T; i++) {
        Stack s;
        s.top = NULL;
        s.count = 0;

        char p[52];
        scanf("%s", p);
        for(int j = 0; j < (int)strlen(p); j++) {
            if(p[j] == '(') {
                push(&s);
            } else {
                pop(&s);
            }
        }
        if(s.count == 0) {
            printf("YES\n");
        } else {
            printf("NO\n");
        }
    }
    return 0;
}

연결리스트로 처리한 괄호문제.

 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int top = 0;

void push() {
    top++;
}

void pop() {
    if(top == 0) {
        top = -999;
        return;
    }
    top--;
}

int main() {
    int T;
    scanf("%d", &T);

    for(int i = 0; i < T; i++) {
        top = 0;
        char p[51];
        scanf("%s", p);

        for(int j = 0; j < (int)strlen(p); j++) {
            if(p[j] == '(') {
                push();
            } else {
                pop();
            }
        }
        if(top == 0) {
            printf("YES\n");
        } else {
            printf("NO\n");
        }
    }
}

스택의 개념을 활용하여 문자 (가 들어오면 top++ )가 들어오면 top--하는 식으로

마지막에 top의 결과가 0일때만 "YES"를 출력

 

 

 

 

반응형

'BaekJoon > C++' 카테고리의 다른 글

11866 : 요세푸스 문제 (C)  (0) 2021.01.10
10845 : 큐 (C)  (0) 2021.01.10
10828 : 스택 (C)  (0) 2021.01.09
10870 : 피보나치 수 5 (C++)  (0) 2020.12.21
10872 : 팩토리얼 (C++)  (0) 2020.12.20

댓글