프로그래머스 연습문제 - 올바른 괄호(Level2, JS)
function solution(s) {
let left = 0;
let answer = false;
for (let [idx, el] of s.split("").entries()) {
if (el === '(') {
left++;
}
else {
left--;
if (left < 0) {
break;
}
if (left === 0 && idx === s.length - 1) {
answer = true;
}
}
}
return answer;
}
다른사람 풀이
function solution(s){
let cum = 0
for (let paren of s) {
cum += paren === '('? 1: -1
if(cum < 0) {
return false
}
}
return cum === 0? true: false;
}
처음에는 가장 익숙한 forEach문을 썼다.
그러나 문제점이 하나 있었다.
!중간에 멈추지 못한다는 것!
return후 forEach문을 빠져나오지 않고 마치 'continue'처럼 동작했다. 즉, forEach는 예외를 던지지 않고는 멈추지 못한다.
return false도 break;도 동작하지 않았다.
원소값과 인덱스를 모두 가질 수 있는 반복문이 무엇이 있을까 찾아보다가 발견한 Array.prototype.entries()
키와 값 모두에 접근할려면 아래와 같이 구조화 하여 사용할 수 있다 .
for (let [index, value] of arr.entries()) { ... }
그외에도 some, every가 있었지만
한다는 점에서 내가 사용하고자 하는 의도(특정조건에서 브레이크, 충족 개수와 상관없음)와는 달라서 사용하지 않았다.