9 . 회문 번호
정수가 주어지면 다음 x를 반환합니다.
회문 번호면 true를 그렇지 않으면 false를 반환합니다.
예 1:
입력: x = 121
출력: 참
설명: 121은 왼쪽에서 오른쪽으로, 오른쪽에서 왼쪽으로 121로 읽습니다.
예 2:
입력: x = -121
출력: false
설명: 왼쪽에서 오른쪽으로 -121을 읽습니다. 오른쪽에서 왼쪽으로 121-가 됩니다. 따라서 회문이 아닙니다.
예 3:
입력: x = 10
출력: false
설명: 오른쪽에서 왼쪽으로 01을 읽습니다. 따라서 회문이 아닙니다.
문제정리
*정수는 양의 정수 음의 정수는 1,2,3,-5,-6 을 말한다.
1. 정수가 주어졌을때 x를 반환하는데, 주어진 정수가 팰린드롬 숫자면 true, 아니면 false를 반환하는 문제이다.
단 조건이 있다.
- x가 음의 정수일때도 생각해야한다. 음의 정수일때는 뒤집었을때 무조건 false가 나온다.
내가 생각한 풀이방법
1. x 정수를 뒤집은 숫자로 만들어준다.
2. 기존에 x 와 위에서 만든 x를 비교해서 같으면 true, 다르면 fasle를 반환해준다.
작성코드📍
function isPalindrome(x) {
const resultNum = x.toString().split("").reverse().join("");
//x를 문자열로 변환 후 배열로 만들고, 배열을 뒤집고, 다시 문자열로 만든다.
if (x === Number(resultNum)) {
//회문문자인지 판별하기위해, 조건문을 사용
//기존의 x와 지지고볶은 resultNum이 같으면 true
return true;
}
if (x !== Number(resultNum)) {
//x와 result가 다르면 false
return false;
}
if (x < 0) {
//x가 음수이면 false
return false;
}
}
let x = 1211;
console.log(isPalindrome(x));
잘못된 코드🎈
function isPalindrome(x) {
const resultNum = x.toString().split('').reverse().join('');
if(x === Number(resultNum)) {
return true;
}else {
return false;
}
if(x < 0) {
return false;
}
}
코드에서의 문제점은
if(x < 0) 음수 판별을 마지막에 했다는게 문제입니다.
이 코드는 x === resultNum과 무관한 코드입니다.
따라서, 이 코드를 마지막에 작성하면, x === resultNum일 때 결과값을 반환한 후 함수가 종료되기 때문에,
x < 0일 때 해당 코드가 실행되지 않고 함수가 종료됩니다.
더 간결해진 변경된 코드 🎶
function isPalindrome(x) {
if(x < 0) {
return flase;
}
const resultNum = x.toString().split('').reverse().join('');
if(x === Number(resultNum)) {
return true;
}else {
return false;
}
}
'알고리즘 > leetCode' 카테고리의 다른 글
[leetcode] Remove Duplicates from Sorted Array (0) | 2023.03.12 |
---|---|
[leetCode] Valid Parentheses (0) | 2023.03.09 |
[leetCode] Longest Common Prefix (0) | 2023.03.07 |
[leetcode] roman to integer (0) | 2023.02.27 |
[leetcode] Two Sum (0) | 2023.02.27 |