[TIL]Code Kata Day2

devMarco·2022년 4월 13일
0

Today I Learned

목록 보기
1/4

문제

reverse 함수에 정수인 숫자를 인자로 받습니다. 그 숫자를 뒤집어서 return해주세요.
x: 숫자 return: 뒤집어진 숫자를 반환!
예들 들어, x: 1234 return: 4321
x: -1234 return: -4321
x: 1230 return: 321

문제를 보고 처음 들었던 생각은 들어온 숫자를 스트링으로 바꿔주는 메서드를 사용해서 배열로 다시 담은뒤 반복문을 사용하고 반복문을 역을로 돌려서 자리를 바꾼 뒤 다시 배열에 담은 뒤에 음수로 들어온 인자는 곱하기-1을하고 양수로 들어온 인자는 들어온데로 배열만 역으로 바꿔서 출력을 할려고 했었다.
그런데 개인적으로 반복문을 여러번 사용하는 로직은 약간의 거부감이 들기 때문에 (사용하는데 아직 어려움) 다른 메서드들을 찾아보았다

const reverse = x => {
  // 여기에 코드를 작성해주세요.
 let array = Math.abs(x).toString().split("");
 // 음수를 양수로 전환, 스트링으로 전환, 쪼개기
 let result = array.reverse().join("");
 // 뒤집고, 합치기
  return (x >= 0) ? result * 1 : result * -1;
  //x가 0보다 크면 그대로, 반대면 *-1(음수는 음수로 반환)
}
console.log(reverse(1234))

위에 나온 결과가 최종 코드이다.더 좋은 방법도 많겠지만 한번 코드를 설명해보면

Math.abs() 함수는 주어진 숫자의 절대값을 반환합니다. x가 양수이거나 0이라면 x를 리턴하고, x가 음수라면 x의 반대값, 즉 양수를 반환합니다.(출처 mdn)

이 메서드를 사용해 전부 양수로 전환을 시켜버렸다.그 뒤에 순서를 바꾸기 위해 문자열로 전환하는 toString()메서드를 사용하고 split("")으로 하나하나 분리를 시켜준 뒤에 이 값들을 reverse()를 사용해 순서를 역으로 바꿔주고 join("")을 사용해 다시 합쳐주었다.
이 부분에서 새롭게 알게 된 부분이 있다. 처음 로직을 완성했을때는

let result = array.reverse().join("");

이 부분이

let result = Number(array.reverse().join(""));

Number() 함수를 사용하여 스트링을 다시 넘버로 바꿔주는 로직이 하나 더 있었다. 다른 분의 설명을 듣고 스트링 타입에 * 연산자를 넣어주면 스트링이 넘버로 변한 다는 것을 알게 되었다.

return (x >= 0) ? result 1 : result -1;

return에서 * 하나를 추가하여 Number() 함수 사용을 제거해 주었다.코드가 이해하기 더 쉬워졌다.

정리하자면Math.abs() 메서드와 스트링에 *를 하면 넘버로 변환되는 것을 경험해 보았다.

0개의 댓글