> 기초/코테 연습
코딩 문제 2. 기러기 토마토 스위스 인도인 별똥별 (회문 숫자)
Janku
2023. 9. 21. 15:28
문제
정수 x가 주어졌을 때, x가 회문 숫자인 경우 true를 반환하고 그렇지 않은 경우 false를 반환합니다.
[회문] 이란? 기러기, 토마토 , 스위스 , 역삼역과 같이 앞에서부터 읽을 때와 뒤에서부터 읽을 때 동일한 것
예시 1:
입력: x = 121
출력: true
설명: 121은 왼쪽에서 오른쪽으로 읽어도, 오른쪽에서 왼쪽으로 읽어도 같은 수입니다.
예시 2:
입력: x = -121
출력: false
설명: 왼쪽에서 오른쪽으로 읽으면 -121이지만, 오른쪽에서 왼쪽으로 읽으면 121-이 되므로 팰린드롬이 아닙니다.
예시 3:
입력: x = 10
출력: false
설명: 오른쪽에서 왼쪽으로 읽으면 01이므로 팰린드롬이 아닙니다.
나의 풀이
const solution = (x) => {
if (x < 10 && x >= 0) return true; // prune : 0~9 사이
if (x < 0) return false; // prune : 0보다 작은 경우
const arr = String(x).split("")
// 방법 1 : For-loop 으로 배열 뒤집기 후, For-loop 으로 배열 요소 비교
let reverseArr = []
for(let i=arr.length-1; i >= 0; i--) {
reverseArr.push(arr[i]);
}
// 방법 2: Reverse 후, For-loop 으로 배열 요소 비교
const reverseArr = [ ...arr ].reverse(); // .reverse()는 원본 배열 유지 불가
for (let i = 0; i < arr.length; i++) {
if (arr[i] !== reverseArr[i]) return false;
}
return true
};