괄호 확인하기 (Level 2)
문제
is_pair함수는 문자열 s를 매개변수로 입력받습니다.
s에 괄호가 알맞게 짝지어져 있으면 True를 아니면 False를 리턴하는 함수를 완성하세요.
예를들어 s가 “(hello)()”면 True이고, “)(“이면 False입니다.
s가 빈 문자열(“”)인 경우는 없습니다.
풀이
function is_pair(s){
let obj = {"(":0};
let arr = s.split("");
for (let i in arr) {
if ( obj["("] < 0 ) {
return false
} else if ( arr[i] == "(") {
obj["("]++
}
else if ( arr[i] == ")") {
obj["("]--
} else {
continue;
}
}
if ( obj["("] == 0 ) { return true }
else { return false }
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log( is_pair(")(") )
코드가 너무 지저분함. 작동을 하긴하는데 별로 맘에들진 않는다.
다른 사람의 풀이
function is_pair(s){
var arr = s.split('');
var zero = 0;
for(var i in arr) {
if(arr[i] === '(')
zero += 1;
else if(arr[i] === ')')
zero -= 1;
if(zero < 0)
return false;
}
return zero === 0;
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log( is_pair("(hello)()") )
console.log( is_pair(")(") )
객체 대신에 그냥 숫자형으로 처리했어도 되는데 괜히 어렵게 생각한듯 하다.
근데 이프문에 중괄호를 안써도되는건가 신기하네