Q. reverse 함수에 정수인 숫자를 인자로 받습니다. 그 숫자를 뒤집어서 return해주세요.
결과 예)
x: 1234
return: 4321
x: -1234
return: -4321
x: 1230
return: 321
A. 우리 팀 답
const reverse = x => {
let arr = x.toString().split('');
console.log(arr)
if (arr[0] === '-'){
arr.shift()
arr.reverse();
arr.unshift('-')
}else{
arr.reverse();
}
return parseInt(arr.join(""))
}
console.log(reverse(1234))
- Array.reverse() : 배열의 순서를 반전해주는 매서드 (MDN 명세)
- Array.join() : 배열을 하나의 문자열로 만듦
- parseInt() : 문자열 속을 숫자를 정수형으로 반환해주는 메서드 (MDN명세)
- '1234abcdaer6789'의 경우 1234까지만 반환함
- 'abcdaer6789'의 경우 NaN 반환함
- 음수(-)값일 경우 "-"문자를 붙인 뒤 정수화시켜 해결
A. 두 번째 답
const reverse = x => {
return parseInt(x.toString().split('').reverse().join('')) * Math.sign(x);
}
console.log(reverse(-1234)) // -4321
console.log(reverse(12340)) // 4321
- 변수 선언을 최소화해보기
- "문자열 변환 > 배열로 변환 > 뒤집기 > 합치기 > 정수화"로 숫자형으로 만든 뒤,
- Math.sign()을 사용해 x가 양수일 때는 1, x가 음수일 때는 -1을 곱해 해결
- Math.sign() : parameter로 받은 값에 따라 양수, 음수, 0을 나타내주는 함수
Math.sign(3); // 1
Math.sign(-3); // -1
Math.sign('-3'); // -1 : 숫자로만 구성된 문자열일 경우 숫자처럼 계산혜줌
Math.sign('3aaa'); // NaN
Math.sign(0); // 0
Math.sign(-0); // -0
Math.sign(NaN); // NaN
Math.sign('num'); // NaN
Math.sign(); // NaN
반응형
'D.evelop [CS] > Algorithm' 카테고리의 다른 글
[Algorithm 008] JS - 1주차 test 다시 풀기 (0) | 2021.09.23 |
---|---|
[Algorithm 007] JS - sameReverse (0) | 2021.09.16 |
[Algorithm 005] JS - twoSum (0) | 2021.09.14 |
[Algorithm 004] JS - 주어진 문자열에서 문자의 인덱스 찾기 (0) | 2021.09.11 |
[Algorithm 003] JS - 가장 긴 단어 찾기 (0) | 2021.09.11 |
댓글