문제
Programmers Lv.2 : 올바른 괄호
https://school.programmers.co.kr/learn/courses/30/lessons/12909
알고리즘
Input: 괄호 문자열 s
- 괄호 확인
1.1. ‘(‘일 때 cnt + 1, ‘)’일 때 cnt – 1
1.2. cnt가 음수일 경우 ( 보다 )가 더 많이 나온 것으로 잘못된 괄호
Output: cnt가 0일 경우 짝이 맞는 옳은 괄호
소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #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 ; } |