[JS] CodeKata 1-2. 배열<=>문자열

hyeonze·2021년 12월 14일
0

문제

reverse 함수에 정수인 숫자를 인자로 받습니다. 그 숫자를 뒤집어서 return해주세요.

x: 숫자 return: 뒤집어진 숫자를 반환!

예들 들어, x: 1234 return: 4321

x: -1234 return: -4321

x: 1230 return: 321

나의 sol

const reverse = x => {
  let xToString = "" + x;
  let ret = "";

  if (xToString.charAt(0) === '-') {
    ret = '-';
    for (let i = 1; i < xToString.length; i++) {
      ret += xToString[xToString.length - i];
    }
  } else if (xToString.charAt(0) !== '-') {
    for (let i = 0; i < xToString.length; i++) {
      ret += xToString[xToString.length - i - 1];
    }
    console.log(ret);
  }
  return (Number(ret));
}

동료의 sol

const reverse = x => {
  const str = String(x);
  let res;

  if (!x) {
    return (x);
  }
  if (x > 0) {
    res = str.split("").reverse().join(""); // 배열됐다 리버스됐다 문자열됐다
    return (+res);
  } else {
    res = str.split("").reverse().slice(0, str.length - 1).join("");
    return (-res);
  }
}

느낀점

메서드를 적극적으로 사용하면 간결한 코드가 나오는 것 같음. 분기할 때 x < 0 // x >= 0 으로 했으면 더 좋았을 것 같음. 받은 인자보다 변환한 문자열에 너무 얽메였던 것 같음. 1230을 뒤집은 0321은 숫자로 변환할 때 321로 변환되기 때문에 따로 처리하지 않음.

포인트

문자열을 온전한 배열로 사용하고싶을 때 str.split("")
배열을 문자열로 바꿔서 사용하고싶을 때 arr.join("")
배열을 반복문 없이 뒤집고싶을 때 arr.reverse()

profile
Advanced thinking should be put into advanced code.

0개의 댓글

관련 채용 정보