Algorithm 02 | code kata

SammyJung·2021년 4월 1일
0

문제 Q2)

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

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

예들 들어,
x: 1234
return: 4321

x: -1234
return: -4321

x: 1230
return: 321

접근방법

const reverse = x => { stringNum = x.toString().split("").reverse() if(x<0){ stringNum.pop(); stringNum.unshift("-"); const num = stringNum.join("")); const num2 = Number(num); } return num2; } console.log(reverse(-1234));

1) stringNum = x.toString().split(‘’).reverse()
우선 순서가 중요하기 때문에 배열형태로 숫자 한개씩을 배열로 만들어서 접근하려했고, 그래서 숫자를 문자열로 바꾸고 문자열을 분할하고 배열로 리턴하는 split 메소드를 이용하였다.🤩

2)reverse메소드로 배열의 요소를 역순으로 바꾸어서 stringNum 변수에 할당했다.

3) if(stringNum[stringNum.length-1] === ‘-’)
stringNum의 마지막 요소가 -(마이너스 문자열) 이면
stringNum.pop();
마지막 요소를 제거하고 그 값을 리턴해주는 pop 메소드로 마지막 - 요소를 삭제했다.

4) stringNum.unshift(‘-’);
그리고 배열의 맨 첫번째 요소로 -(마이너스 문자열)을 추가했다.

5) const num = stringNum.join("")); const num2 = Number(num); join 메소드를 통해 배열의 모든 요소를 연결해 하나의 문자열로 리턴한다. 합쳐진 문자열을 변수에 할당하고 Number메소드로 숫자로 다시 바꿔준다.

코드리뷰

주어진 x인자 값이 음수일 때 조건을 동기들과 푼 방법을 이야기 하면서if(stringNum[stringNum.length-1] === ‘-’) 이렇게 문자열로 변환 하고 조건문으로 판단하는 것 보다 단순하게
if(x<0){ stringNum.pop(); stringNum.unshift("-");
이렇게 수정하는 것이 효율적이지 않을지 이야기해보았다. mock 데이터로 결과를 확인해보면서 역시 같은 결과를 얻을수 있었고 작은 부분이지만 코드가 간결해졌다.😁

최종코드

const reverse = x => {
stringNum = x.toString().split("").reverse()
if(x<0){
stringNum.pop();
stringNum.unshift("-");
} return Number(stringNum.join(""));
}
console.log(reverse(-1234));

profile
안녕하세요! 프론트엔드 개발자 새미입니다:D

0개의 댓글