문제풀이 reverse

문제

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


구현 코드


const reverse = x => {
 const numToString = x.toString();
 const result = [];
 for(i=numToString.length-1; i>=0; i--){
   if(numToString[i]=="-"){
     result.unshift(numToString[0])
   }else{
     result.push(numToString[i])
   }
 }const sumResult = result.join('');
  return Number(sumResult)
}

console.log(reverse(-98760543210))

코드 해부


  1. 매개변수 x 의 값을 문자열로 바꿔서 담을 numToString 변수 생성

  2. 결과 값을 담을 result 변수 생성

  3. 값을 거꾸로 담을 것이기 때문에 포문을 통해 numToString 배열의 값이 반대 순서로 하나씩 result 변수에 담기게 하도록 작성

  4. 그래서 if문의 조건으로 numToString의 요소들을 하나씩 순회하면서 "-" 가 있는지 찾아낸다
    매개변수의 값이 음수라면 무조건 첫 string은 문자 일 것이다.
    그러므로 numToString의 첫번째 요소(-) 를 unshift를 통해 배열의 앞으로 배치한다

  5. 앞의 조건이 맞지 않는다면 배열의 뒤로 numToString의 값을 하나하나 넣어준다.

  6. 배열의 요소들간의 , 를 없애기 위해서 join() 메소드를 사용해서 sumResult에 담는다.

  7. sumResult의 값을 Number() 메소드를 통해 숫자로 바꾸고 리턴한다.


실수했던 점


  • 처음에 filter()메소드를 통해 0 의 값을 지우려 했다. 하지만 인자값 중간에 0 이 포함된다면 그 0마저도 사라지기 때문에 마지막에 Number()메소드를 사용했다 마지막에 Number()메소드를 사용했을때는 앞에 0이 붙어도 자동으로 없어지는걸 확인할 수 있었다.

  • for문에서 i가 순회하는것을 정순으로 하려했다 하지만 이 방법은 다소 코드를 더 복잡하게 만들어서 반대순서로 순회하도록 구성해보았다

알게된 메소드


join()

const elements = ['fish', 'banana', 'melon'];

console.log(elements.join());
// expected output: "fish,banana,melon"

console.log(elements.join(''));
// expected output: "fishbananamelon"

console.log(elements.join('-'));
// expected output: "fish-banana-melon"

예시처럼 join() 메소드는 배열의 모든 요소를 연결해 하나의 문자열로 만든다


결과

좋은 웹페이지 즐겨찾기