배움 기록/코테 연습
[프로그래머스] 올바른 괄호 : JavaScript
dygreen
2025. 4. 5. 18:02
반응형
📌 문제
📌 풀이
🚫 처음 풀이
function solution(s){
return s.startsWith("(") && s.endsWith(")") && s.length % 2 === 0
}
- '(' 로 시작하고, ')'로 끝나고, 짝지어서 열고 닫아야 한다고 해서 위와 같이 풀었는데 틀렸다ㅜ
- 그 이유는 아래 맞는 풀이에서 설명하겠다
✅ 맞는 풀이
function solution(s) {
let count = 0;
for (let char of s) {
if (char === '(') {
count++;
} else if (char === ')') {
count--;
}
if (count < 0) {
return false;
}
}
return count === 0;
}
- 처음 풀이로 풀었을 때 "())(()" 의 경우 틀리게 된다
- 첫 문자가 '('로 시작하고, 마지막 문자가 ')'로 끝나고, 전체 길이가 짝수인 경우를 체크할 때는 맞지만
- 중간 과정에서 balance 가 음수가 되기 때문에 위 예시로 봤을 때는 처음 풀이가 틀리게 되는 것이다
- 즉, 올바른 괄호 문자열인지 판단하려면, 문자열 내부에서 각 여는 괄호에 대해 닫는 괄호가 올바른 순서로 등장하는지도 검증해야 된다
728x90
반응형