[Day 2] 정수인 숫자 거꾸로 바꾸기

누리·2022년 10월 6일
0

CodeKata

목록 보기
2/7

📅 22.10.05
📖 파트너 : 모유진

문제설명 :
reverse함수에 정수인 숫자를 인자로 받습니다. 그 숫자를 뒤집어서 return 해주세요
x : 숫자
return : 뒤집어진 숫자를 반환

  • nums: 숫자 배열
  • target: 두 수를 더해서 나올 수 있는 합계
  • return: 두 수의 index를 가진 숫자 배열
예를 들어,
x: 1234
return: 4321

x: -1234
return: -4321

x: 1230
return: 321

1. 문자열 배열로 바꿔 음의정수 조건 처리하기

처음에는 문자열로 받은 변수를 배열로 반환하는데 양의정수와 음의정수 처리를 생각할때 - 부호를 따로 관리하여 빼둔다음 마지막에 조건문을 사용해 배열을 합치는 방향으로 생각을 했다

const reverse = x => {
  const array = x.toString().split("");
  console.log(array);

  const minus = array.filter((el) => el === "-");
  console.log(minus);
  if (minus.length === 1) {
    array.shift();
    array.reverse();
    const newArray = minus.concat(array).join("");
    return Number(newArray);
  } else {
    return Number(array.reverse().join(""));
  }
}

이 코드를 짤 때 유의해야 할 점은

  • .split() 메서드는 sting 타입에서 사용하여야만 배열로 반환이 가능하다 그래서 toString()메서드를 먼저 써주어야한다
  • 마이너스 부호를 따로 담기위해 filter메서드로 각각의 배열요소가 "-"가 일치하는지 확인해 일치하는 값을 배열로 반환해 변수 minus로 담아 주었다
  • 그리고 조건을 minus배열에 값이 있는지 없는지 판단하는 조건문으로 쓰는데 if(minus)를 true로 판단하지 않았다 값이 있는것은 truthy값으로 받아들여서 조건문을 충족할 줄 알았는데 아니었다.
    그래서 if(minus.lenght===1)로 배열길이 조건을 넣어 코드를 짰다
  • 조건문 안에서(-부호가있다면) 결국 배열array[0] = "-"이므로 배열의 앞에서 부터 값을 빼내는 shift()함수를 사용하여 부호를 빼냈고
    남은 배열의 "숫자" 들은 reverse()함수를 사용해 값을 거꾸로 바꿔준다
  • 새로운 변수인newArray에 minus배열과 array배열을 concat으로 배열을 합치고 join("")으로 한문장으로 합친 값을 할당하고
    문자열을 숫자로 바꿔서 반환해준다
  • else일때는(-부호가 없다면) 배열의 첫요소를 삭제하는 shift와 배열을 합치는 concat 메서드를 제외하고 숫자로 거꾸로 바꾼 값을 반환한다

2. 양의정수 음의정수 숫자 조건으로 풀기

풀고 나서 조건문 부분이 너무 복잡해서 다른 방법을 생각해 보았다.
처음에는 - 부호라는 string으로 집착을 했었다면 애초에 변수 x 는 number 자료형이므로 그냥 숫자로 판단하면 간단한 문제였다.

전체적인 흐름은 비슷하나 음의 정수를 처리하는 방법을 달리 하였다.

const reverse = x => {
  
  const str = x.toString().split("");
  if (x < 0) {
    str.shift();
    return Number(str.reverse().join("")) * -1
  } else {
    return Number(str.reverse().join(""));
  }

}

이 코드를 짤 때 유의해야 할 점은

  • reverse() 메서드는 배열에만 적용할 수 있는 메서드이다(숫자건 문자건). 일반적으로 우리는 하나의 문자열을 배열처럼 쓸 수 있지만 reverse 메서드는 그것이 불가능 하므로 필히 문자열도 split("")으로 각각의 요소를 배열로 반환한 다음 reverse 사용이 가능하다
  • 숫자인 매개변수 x 를 x<0 조건으로 판단하여 처리 하는 방법이다.
    x가 음의 정수인 조건에서는 최종적으로 순서를 바꾼 문자열을 숫자로 변환하여 -1 곱셈으로 연산처리 해주면 간단하다
profile
프론트엔드 개발자

0개의 댓글