Programmers Lv.2 : 올바른 괄호 [C]

문제

Programmers Lv.2 : 올바른 괄호
https://school.programmers.co.kr/learn/courses/30/lessons/12909


알고리즘

Input: 괄호 문자열 s

  1. 괄호 확인
    1.1. ‘(‘일 때 cnt + 1, ‘)’일 때 cnt – 1
    1.2. cnt가 음수일 경우 ( 보다 )가 더 많이 나온 것으로 잘못된 괄호

Output: cnt가 0일 경우 짝이 맞는 옳은 괄호


소스코드

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

// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
bool solution(const char* s) {
    /* Input: 괄호 문자열 s */

    int cnt = 0;
    int len = strlen(s);

    /* 1. 괄호 확인 */
    /* 1.1. '('일 때 cnt + 1, ')'일 때 cnt - 1 */
    /* 1.2. cnt가 음수일 경우 ( 보다 )가 더 많이 나온 것으로 잘못된 괄호 */
    for(int i = 0; i < len; i++){
        if(s[i] == '(') cnt++;
        else{
            cnt--;
            if(cnt < 0) return false;
        }
    }
    
    /* Output: cnt가 0일 경우 짝이 맞는 옳은 괄호 */
    return (cnt == 0) ? true : false;
}

Leave a Comment