본문 바로가기
프로그래머스/C

[프로그래머스/C]프로그래머스 Level 2 : 올바른 괄호 C언어

by starfish22 2022. 7. 24.
728x90

▶문제 : 코딩테스트 연습 - 올바른 괄호 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

▶코드 작성

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

bool solution(const char *s) {
    int count = 0;
    for (int i = 0; s[i] != '\0'; i++) {
        if (s[i] == '(') count++;//괄호를 열었을 때 +1
        else {//괄호를 닫을 때
            if (count == 0) return false;//닫을 괄호가 없다면 false
            else count--;//닫을 괄호가 있다면 -1해주어 닫음
        }
    }
    return (count == 0) ? true : false;//괄호를 모두 닫았다면 true 아니면 false
}

 

▶해석

괄호를 여닫는 방법을 count변수로 카운팅 하는 방식으로 구하였다.

for문으로 문자열 s안의 괄호를 탐색하여 '('여는 괄호는 count++, ')'닫는 괄호는 count--를 해주었다.

여기서 닫을 때 count변수의 값이 0이라면 열린 괄호가 없으므로 닫는 괄호가 나온 것은 올바르지 않아 false를 반환한다.

마지막으로 반환할 때 count가 0이면 여는 괄호와 닫는 괄호의 개수가 일치했으므로 true를 반환하고 아니면 false를 반환한다.

728x90

댓글