CodeKata 05.

서동이·2021년 4월 8일
0

CodeKata

목록 보기
3/5
post-thumbnail

문제

s는 여러 괄호들로 이루어진 String 인자입니다.
s가 유효한 표현인지 아닌지 true/false로 반환해주세요.
종류는 '(', ')', '[', ']', '{', '}' 으로 총 6개 있습니다.
아래의 경우 유효합니다.
한 번 괄호를 시작했으면, 같은 괄호로 끝내야 한다.
괄호 순서가 맞아야 한다.
예를 들어 아래와 같습니다.

s = "()"
return true
s = "()[]{}"
return true
s = "(]"
return false
s = "([)]"
return false
s = "{[]}"
return true

1. 내가 제출한 답: 언제나 틀림

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('[}]'));

2. 찾은답안

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

3. 느낀점

그냥,,도전한거에 의의를 ,,, 오브젝트 쓸생각을 왜 못했을까

profile
오늘도 여전히 사고친걸 해결해본당,,

0개의 댓글