본문 바로가기
배움 기록/코테 연습

[프로그래머스] 올바른 괄호 : JavaScript

by dygreen 2025. 4. 5.
반응형

📌 문제

 

📌 풀이

🚫 처음 풀이

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

댓글