문제
s는 여러 괄호들로 이루어진 String 인자입니다.
s가 유효한 표현인지 아닌지 true/false로 반환해주세요.
종류는 '(', ')', '[', ']', '{', '}' 으로 총 6개 있습니다.
아래의 경우 유효합니다.
한 번 괄호를 시작했으면, 같은 괄호로 끝내야 한다.
괄호 순서가 맞아야 한다.
예를 들어 아래와 같습니다.s = "()" return true s = "()[]{}" return true s = "(]" return false s = "([)]" return false s = "{[]}" return true
function isValid(s) {
const shape =['(', ')', '[', ']', '{', '}'];
const a = shape[0]+ shape[1];
const b = shape[2] + shape[3];
const c = shape[4] + shape[5];
for( let i= 0; i < shape.length; i++) {
for (let j = 0; j < shape.length; j++) {
const result = shape[i] + shape[j];
if (result === a || b|| c){
return true;
} else {
return false;
}
}
}
}
console.log(isValid('[}]'));
function isValid(s) {
ss = s.split('')
obj = {
"(":")",
"[":"]",
"{":"}"
}
for (let i = ss.length-1 ; i>-1 ; i--){
if ((ss[0]===")" || ss[0]==="]"||ss[ss.length-1]==="}")||(ss[ss.length-1]==="(" || ss[ss.length-1]==="["||ss[ss.length-1]==="{"))return false;
if (ss[i]==="(" || ss[i]==="["||ss[i]==="{"){
if(ss[i+1]===obj[ss[i]]){
let removed = ss.splice(i,2);
isValid(ss.join(""));
}else{
return false;
}
} if(ss.length===0)return true;
}
}
isValid("(())}") ==> false
https://github.com/rumbarum/CodeKata/blob/master/Week2_Day3.md
그냥,,도전한거에 의의를 ,,, 오브젝트 쓸생각을 왜 못했을까