728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/12909
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
// ())((): 안되는 예시
bool solution(const char* s) {
bool answer = true;
int cnt = 0;
if(s[0] == '('){
for(int i = 0; i < strlen(s); i++){
if(s[i] == '('){
cnt++;
}else
cnt--;
if(cnt == -1){
answer = false;
break;
}
}
if(cnt != 0){
answer = false;
}
}else
answer = false;
return answer;
}
- 맨 처음에는 '(' 및 ')' 개수를 cnt 해서 동일하지 않으면 answer를 false로 했음. 그러나 '())(()' 경우, 내가 한 논리로 하면 true가 나옴. 따라서 cnt 해서 동일하다고 하면 안 됨. 테스트 5번인가 애러가 뜸.
- 따라서, '(' 이면 cnt++를 하고 ')'이면 cnt--를 함. 만약 cnt가 -1이 되면 false가 되게 하고, break함.
- 이 외에 첫 시작이 ')'면 false, cnt가 0이 아니면 false로 함.
728x90
반응형
'공돌이 > C언어' 카테고리의 다른 글
[프로그래머스/C언어] 나머지 한 점 (0) | 2023.03.24 |
---|---|
[C언어] 오름차순, 내림차순 (0) | 2023.03.24 |
[프로그래머스/C언어] 없는 숫자 더하기 (0) | 2023.03.21 |
[프로그래머스/C언어] 음양 더하기 (2) | 2023.03.18 |
[프로그래머스/C언어] 가운데 글자 가져오기 (0) | 2023.03.17 |
댓글