Contents

[Codility] Lesson7. Stacks and Queues-Nesting C언어 풀이

   Aug 24, 2020     0 min read     - Comments

1. 문제

(, )로 이루어진 문자열 S가 주어졌을 때, 나머지 없이 쌍을 이루는지 확인하는 문제

예제    
'()()', '(())', '((()()))' - 참   
'())', '(()', ')()(' - 거짓   

2. 정답

첫번째 - 100점

$O(N)$

int solution(char *S) {
    int top = -1;
    
    for(int i = 0; i < strlen(S); i++){
        if(S[i] == '(') top++;
        else if(top == -1) return 0;
        else top--;
    }

    return top == -1 ? 1 : 0;
}

(을 스택에 입력 하였다. 이때 거짓이 되는 조건이 2가지가 있다.
스택에 자료가 없는데 )가 입력될 경우
문자열이 끝났는데 스택에 자료가 남아 있을 경우