> 기초/코테 연습

코딩 문제 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
};