반응형
📌 문제

📌 풀이
🚫 처음 풀이
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
'배움 기록 > 코테 연습' 카테고리의 다른 글
[프로그래머스] 프로세스 : JavaScript (0) | 2025.04.06 |
---|---|
[프로그래머스] 모의고사 : JavaScript (0) | 2025.03.29 |
[프로그래머스] 의상 : JavaScript (0) | 2025.03.23 |
[프로그래머스] 완주하지 못한 선수 : JavaScript (0) | 2025.03.22 |
[프로그래머스] 빈 배열에 추가, 삭제하기 : JavaScript (1) | 2025.02.17 |
댓글