[TIL] 27 - Code Kata 1-4

1744 단어 Coda KataCoda Kata

숫자인 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 이기 때문
  1. 숫자인 인자를 숫자형태로는 뒤집을 수가 없다. 그래서 뒤집기 위해서 형태를 변환해줘야 한다. 문자형이나 배열이 있으나 얼마전 코트카타에서 배열을 많이 사용해서 문자형을 활용해보기로 했다.
  • 숫자.toString
  • String() <-> Number()
  • '' + 숫자 , 암묵적 형변환
  1. 변환을 시켰으니 인자의 각 자리마다 비교하기 위해 (for...of) 를 사용하였다. for..of 의 경우 일반 for 문처럼 범위를 지정해줄 필요없이 for of 에 해당하는 인자값이 자동으로 1 -> 1번째 이런식으로 매칭이 된다. 하지만!!!!!!!!!! 뒤집은 모양이 똑같은지 라는 조건이 붙어서 고민을 많이 했는데, 짝꿍분이 정말 똑부러지게 이건 문자열 형태이고, 만약 첫번째걸 부르고 두번째걸 불렀을때 숫자형처럼 합쳐지는게 아니라 나열되는 부분을 집어서 말해주셔서 해결할 수 있는 열쇠를 찾은 기분이었다.

  2. result = i + result 라는것은 결국 호출한 i + result를 result에 넣어주는것인데 ( 만약 num이 123이라면 i=1일때 1(i), i=2 일때 2(i)1, i=3일때 3(i)21 로 더해지는것이 아니라 문자열이어서 나열되어 자리가 뒤바뀌는 것이다.

  3. 거꾸로 뒤바꿨으니 결과값을 내기 위해 if 를 사용하려고 하였는데 짝꿍님이 삼항연산자를 써보자고하셔서 그거로 진행했고, 특히 처음엔 삼항연산자 연산부분을 for 밑줄에 쓰고 return을 따로 주려고 했는데 그냥 바로 return 값에 집어넣어도 정상적으로 작동하는걸 보니 불필요한 코드부분을 줄일수 있게 되었다!

** 현재는 let 변수에 빈문자열을 정의해주어서 문자열 끼리의 비교이기 때문에 엄격한 비교(===)를 해도 결과값이 잘 나오지만 만약 문자열, 숫자열 이렇게 비교하는 상황이라면 == 를 써야한다..!

const sameReverse = num => {
  let convertString = '';
  let result = '';
  // 암묵적 형변환
  convertString = ''+num;
  for(let i of convertString) result = i + result;
   return ((convertString == result )) ? true : false 
} 

좋은 웹페이지 즐겨찾기