-
[알고리즘] #Palindrome Number■ Algorithm 2022. 10. 12. 20:41
문제 출처: https://leetcode.com/problems/palindrome-number/
문제 해석
앞으로 읽어도, 뒤에서 읽어도 값이 같은 숫자를 palindrome 숫자라고 한다. 정수 x가 주어졌을 때, x가 palindrome 숫자이면 true를, 아니면 false를 리턴하라.
풀이
방법1) x를 문자열로 바꾸어 reverse()한 값과 x 값을 비교한다. -> x의 크기가 커질수록 오래걸림
var isPalindrome = function(x) { if (x<0) return false if (x<10) return true return x == x.toString().split("").reverse().join("") };
방법2) x를 반으로 갈라 앞에 값과 뒤의 값을 reverse()한 값을 비교한다.
var isPalindrome = function(x) { if (x<0) return false if (x<10) return true const strX = x.toString() const mid = Math.floor(strX.length/2) if (strX.length%2 > 0) { return strX.substring(0, mid).split("").reverse().join("") === strX.substring(mid+1, strX.length) } else { return strX.substring(0, mid).split("").reverse().join("") === strX.substring(mid, strX.length) } };
✅ x를 문자열로 바꾸고 reverse할 때, split()을 사용했는데 Array.from()을 활용한 방법도 있다.
Array.from(str)
얕은 복사를 이용해 새로운 Array 객체를 만드는 메서드.
String.prototype.split()
String 객체를 구분자를 이용하여 여러 개의 문자열로 나누는 메서드.
이 두가지 메서드의 처리 속도를 비교해보면 아래와 같다.
'■ Algorithm' 카테고리의 다른 글
[알고리즘] #Roman to Integer (0) 2022.10.13 [알고리즘] #Longest Substring Without Repeating Characters (0) 2022.08.06 [알고리즘] #Remove Nth Node From End of List (0) 2022.08.05 [알고리즘] #Middle of the Linked List (0) 2022.08.05 [알고리즘] #Reverse Words in a String III (0) 2022.08.05