Code Kata - 3~4

JungHoon Park·2021년 6월 24일
1

Code Kata

목록 보기
3/4
post-thumbnail

Code Kata - Quiz 3

String 형인 str 인자에서 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환해주세요.

str: 텍스트 return: 중복되지 않은 알파벳 길이 (숫자 반환)
예를 들어, str = "abcabcabc" return 은 3 => 'abc' 가 제일 길기 때문
str = "aaaaa" return 은 1 => 'a' 가 제일 길기 때문
str = "sttrg" return 은 3 => 'trg' 가 제일 길기 때문

내 솔루션

const getLengthOfStr = str => {
  let arr = []; // filter 메서드 대단하다, includes 메서드
  
  str.split('').filter(word => {
    //console.log(word);
    if(arr.length === 0){
      arr.push(word)
      //console.log()
    }else if(arr.includes(word)){
      
    }
  })
}
  1. split('')으로 배열로 변환
  2. let contiuntiyWord = {} 하나 만들기
  3. for문으로 돌다가 같은거 나오면 그
  4. 그 후에 join('')으로 리턴

이런식으로 계속 접근하면 메소드를 달리 해볼까 고민하다가 결국에는 해결을 하지 못했다.🥲
그 후 계속 고민하다가 다음날 다른 분들의 풀이를 참고를 했는데 그중 재상님의 솔루션을 소개하고자 한다.

재상님 솔루션 👀

function getLengthOfStr(s){
  let strArr = [];
  let strArr2 = [];
  
  for(let i = 0; i < s.length; i++){
    let ss = s.slice(i, i+1);
    for(let j = 0; j<strArr.length; j++){
      if(ss === strArr[j]){
        if(strArr2.length < strArr.length){
           strArr2 = strArr.slice();
        }
        strArr = strArr.slice();
        break;
      }
    }
    strArr.push(ss)
  }
  return Math.max(strArr.elngth, strArr2.length;)
}


사실 아직 완벽하게 나만의 코드로 작성을 못해 리팩토링한 내 코드를 적지는 않았다. 현재로서는 재상님의 친절한 설명으로 따라치기에 불과해서..다시 하나하나 구현해야 할 기능을 나눠서 작성해보는 시간을 갖도록 해야겠다.

Code Kata - Quiz 4

숫자인 num을 인자로 넘겨주면, 뒤집은 모양이 num과 똑같은지 여부를 반환해주세요.
num: 숫자 return: true or false (뒤집은 모양이 num와 똑같은지 여부)

예를 들어, 
num = 123 return false => 뒤집은 모양이 321 이기 때문
num = 1221 return true => 뒤집은 모양이 1221 이기 때문
num = -121 return false => 뒤집은 모양이 121- 이기 때문
num = 10 return false => 뒤집은 모양이 01 이기 때문

내 솔루션

const sameReverse = num => {
  
  let numToString = num.toString();
  let reverseToString = numToString.split('').reverse().join('');

  if(numToString === reverseToString){
    return true;
  }else {
    return false;
  }
}

생각한 순서🧐

  • 숫자가 인자로 들어와 비교를 할려면 우선 배열로 바꿔야겠다.
    • .toString()로 문자열로 -> .split('')으로 배열로
  • arrayToString : 배열로 바꾸는 변수를 미리 선언
  • numToArray : 배열을 다시 문자열로 by.join('')
  • reverseToString : 배열을 뒤집은 것을 문자열로 by.join(''),reverse()
  • if문으로 모양이 똑같은면 true, 다르면 false

지수님 솔루션👀

  let a = num.toString().split('').reverse().join('');
  let result = (num.toString() === a ? true : false);
  return result;

종민님 솔루션👀

return num.toString() === num.toString().split('').reverse().join('')

다시 정리한 솔루션👏

let numToString = num.toString();
let reverseToString = numToString.split('').reverse().join('');
return numToString === reverseToString;

배운점

  • 이번 코드카타는 코드카타2에서 고칠점을 반영했지만 리팩토링 관점에서 접근하는 것이 부족했다.
  • 지수님이 사용하신 삼항연산자를 사용하는 습관을 들여야겠다.
    • if문의 조건이 길지 않다면 삼항연산자를 사용해야겠다.
  • 종민님은 한줄로 바로 적으셨다.(이게 니꼴라스가 말하는 자바스크립트의 sexy🔥라는 것인가..
  • 다시 정리한 솔루션은 유지보수도 고려하여 적절히 혼합했다!
  • 앞으로 플로우를 생각하면 적는 것을 계속하고 작성하고 다시 보며 리팩토링을 해봐야겠다.🤸‍♀️
profile
이사중 ! https://dpark-log.tistory.com/14

0개의 댓글