요즘 알고리즘 공부를 시작해서 easy 단계부터 차근차근 풀고 있다.
palindrome number 는 임의의 수를 대칭인지 확인하는 문제이다.
예를들어 12321 은 대칭이고 1231 은 비대칭임으로 전자는 true, 후자는 false 를 반환한다.
처음 문제를 접하였을때 for문의 index로 해당요소 반대편 요소를 접근하여 풀었다.
var isPalindrome = function (x) {
let result = true;
const str = String(x);
const strLength = str.length;
for (let i = 0; i < strLength / 2; i++) {
if (str[i] !== str[strLength - 1 - i]) {
return result = false;
}
}
return result;
};
채점 후 통화하고나서 점심을 먹으며 직장동료와 얘기중 나는 이런방식으로 접근했다고하니
String 변환 후 뒤집어서 비교를 하면 되는거 아니냐는 동료 얘기에 다시 한번 풀어보았다.
var isPalindrome = function(x) {
const str = String(x);
const reverseStr = str.split("").reverse().join("");
return str === reverseStr;
};
훨씬 코드가 간결해졌다. Runtime 에서 큰 차이를 느끼지 못하였다.
내가 작성한 코드와 다른사람은 어떤 방식으로 접근하는지 비교하는것이 많이 공부가 된다는걸 깨달았다.