IT 지식

[TIL]Day 22. Code Kata 내용 정리(201006)

느루늘품 2020. 10. 6. 11:25
728x90

이번 포스팅은 Code Kate에 대한 내용을 정리해보도록 하겠습니다.

 

* 문제

reverse 함수에 정수인 숫자를 인자로 받습니다.

그 숫자를 뒤집어서 return해주세요.

 

x: 숫자

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

 

예를 들어,

x: 1234 return: 4321

x: -1234 return: -4321

x: 1230 return: 321

 

더보기

해결책: 

 

Number형태의 자료형은 그 단일 문자를 split 할 수 없기 때문에, 우선 각각의 숫자들을 구분하기 위해 string 자료형으로 바꿔줘야 합니다. 

 

그 후 string화 된 자료형을 split 메소드를 이용하여 각각의 구분된 배열로 바꾼 후 ->

reverse 메소드를 이용하여 배열의 순서를 바꾸고 ->

join 메소드를 이용하여 각각의 문자열을 하나로 합쳐줍니다. ->

마지막으로 문자열 형태로 되어 있는 숫자들을 Number 메소드를 이용하여 숫자로 변환합니다.

 

*주의! 

음수의 경우에는 문자열로 변환했을 때, - 부호를 포함한 채로 Number로 변환하려 한다면 배열의 맨 마지막에 - 부호가 존재하기 때문에 해당 문자열은 Number가 될 수 없습니다(NaN이 return 됩니다). 따라서 음수를 양수로 바꿔준 후에 같은 방법을 진행하고 마지막에 다시 음수로 바꿔주는 과정이 필요합니다.

 

const reverse = x => {
  if (x > 0) {
    x = x + "";
    return Number(x.split("").reverse().join(""));
  } 
  x = -x
  x = x + ""
  let reverseNumber =  Number(x.split("").reverse().join(""));
  return -reverseNumber;
}

console.log(reverse(1234)); //return 4321
console.log(reverse(-1234)); //return -4321
더보기

 

 

*split 메소드 주의사항(from MDN 문서): 구분자로 빈 문자열("")을 제공하면, 사용자가 인식하는 문자 하나(grapheme cluster) 또는 유니코드 문자(코드포인트) 하나씩으로 나누는 것이 아니라, UTF-16 코드유닛으로 나누게 되며 써로게이트 페어surrogate pair가 망가질 수 있습니다. 스택 오버플로우의 How do you get a string to a character array in JavaScript? 질문도 참고해 보세요.

728x90