숫자인 num을 인자로 넘겨주면, 뒤집은 모양이 num과 똑같은지 여부를 반환해주세요.
num: 숫자
return: true or false (뒤집은 모양이 num와 똑같은지 여부)
예를 들어,
num = 123
return false
=> 뒤집은 모양이 321 이기 때문
num = 1221
return true
=> 뒤집은 모양이 1221 이기 때문
num = -121
return false
=> 뒤집은 모양이 121- 이기 때문
num = 10
return false
=> 뒤집은 모양이 01 이기 때문
- 나의 코드
const sameReverse = num => { const strNum = String(num); const strNumArr = strNum.split(""); const reverseNum = strNumArr.reverse(); const numJoin = reverseNum.join(""); if((strNum[0] === '-') || (strNum !== numJoin)){ return false; } else if(strNum === numJoin) { return true; } }
- 접근 방법
CodeKata 02. 에서 풀었던 문제와 비슷하게 숫자를 문자열로 바꾸어서 각 자릿수별로 배열에 담는 방법으로 접근했다.
1) 숫자를 문자열로 바꾸어주고
'1234'
const strNum = String(num);
2) 각각 자릿수 별 숫자로 나누어 배열로 만들어준뒤,
[ '1', '2', '3', '4' ]
const strNumArr = strNum.split("");
3) 기존의 배열 내 데이터의 순서를 반대로 받아오는 배열을 만들어주고,
[ '4', '3', '2', '1' ]
const reverseNum = strNumArr.reverse();
4) 배열 내 각 데이터를 하나의 문자열로 다시 합친 뒤,
'4321'
const numJoin = reverseNum.join("");
5) 변수
strNum
와 변수numJoin
가 같은지 여부에 따라true
orfalse
를 반환하는if 문
을 써준다.
- 단, 인자로 받은 num이음수
일 경우 뒤집으면 무조건마이너스(-)
부호가 맨 뒤로 가기 때문에
뒤집기 전과 후가 절대 같아질 수 없으므로false
가 반환되는 조건문에 해당 조건을 추가해주었다.if((strNum[0] === '-') || (strNum !== numJoin)){ return false; } else if(strNum === numJoin) { return true; }
- | |
---|---|
String() | 괄호 안의 숫자 -> 문자열로 변환 |
배열 관련 메서드 | |
---|---|
split("") 메서드 | 괄호 안의 요소를 기준으로 문자열 -> 배열로 변환 |
reverse() 메서드 | 배열내 데이터 순서를 반대로 변환 |
join("") 메서드 | 배열의 데이터들을 괄호 안의 요소를 사이에 두고 합침 |
reverse() 메서드 | 배열내 데이터 순서를 반대로 변환 |