-
[알고리즘] #Palindrome Number■ Algorithm 2022. 10. 12. 20:41
문제 출처: https://leetcode.com/problems/palindrome-number/
Palindrome Number - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
문제 해석
앞으로 읽어도, 뒤에서 읽어도 값이 같은 숫자를 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