1. 나의 생각 흐름
두 가지 해법을 찾았다. 우선 가장 간단하게 if문을 이용해서 답을 찾는 풀이, Math메소드를 이용해서 답을 찾는 풀이.
2. 나의 코드 정리
// 풀이 1
const reverse = x => {
// 여기에 코드를 작성해주세요.
return parseInt(x.toString().split('').reverse().join('')) * Math.sign(x);
}
//x가 숫자의 형태니까 문자의 형태로 변환을 해준 다음 split을 통해 한 묶음의 문자를 각각 한개씩 나눠준다.
//그래야 reverse로 뒤집을 수 있기 때문! reverse로 뒤집고 난 후, join을 통해 하나로 묶어준다.
//이 하나의 문자를 parseInt를 통해 숫자로 변환해준 후, 마이너스 부호의 경우 그대로 부호를 가져와야하기에
//Math.sign()메소드를 이용해서 곱해주면 된다.
** Math.sign() 메소드 **
사용법 : Math.sign(숫자) // number 의 부호를 알아내기 위한 helper method
Math.sign() 함수는 주어진 수의 부호를 나타내는 +/-1을 반환한다.
단, Math.sign()에 제공한 수가 0일 경우 부호에 따라 +/-0을 반환한다. (양수는 +로 표기하지 않고 생략한다)
Reverse Int(숫자 거꾸로 바꾸기) Algorithm에서 유용하게 사용했다.
(number를 string으로 바꿔 다루는 경우, 최종값은 number로 반환해야 하기 때문에 부호를 되찾을 때 사용한다)
Reverse Int algorithm을 다룰 때, test case로 주어진 number값을 string으로 변환 후 순서를 뒤바꿔 줘야한다.
따라서, 마지막 결과값을 return 해줄 때, Math.sign(test case값)을 곱해주면 본래의 부호를 손쉽게 다시 되찾을 수 있다.
// 풀이 2
const reverse = x =>{
let answer = parseInt(x.toString().split('').reverse().join(''));
if(answer < 0) { return answer * (-1)}
else{ return answer}
}
3. 결론
문제 풀때 항상 느끼는 것은 간단하게 풀 수 있는 메소드들이 정말 많다는 것이다. 앞으로 다양한 문제들을 풀면서 다양한 메소드를 공부해야겠다. 그러면 좀 더 간단하게 편하게 문제를 풀 수 있고 시간도 절약되는 것 같다.
'알고리즘' 카테고리의 다른 글
[CodeKata] Week 1 - Day 5 ( JavaScript ) (0) | 2022.02.18 |
---|---|
[CodeKata] Week 1 - Day 4 ( JavaScript ) (2) | 2022.02.17 |
[Programmars] K 번째 수 (JavaScript) (0) | 2022.02.15 |
[CodeKata] Week 1 - Day 1 (J.S) (0) | 2022.02.14 |
[Programmars] 완주하지 못한 선수 (JavaScript) (0) | 2022.02.11 |
댓글