
2가지 방법
방법1) 직접 앞뒤로 비교
내풀이
function solution(s) {
const mid = Math.floor(s.length - 1) / 2;
let flag = true;
let answer;
s = s.toLowerCase();
for (let i = 0; i < mid; i++) {
if (s[i] !== s[s.length - 1 - i]) {
flag = false;
}
}
if (flag === true) {
answer = 'YES';
} else {
answer = 'NO';
}
return answer;
}
let str = 'goooG';
console.log(solution(str));
해설 풀이
function solution(s) {
let answer = 'YES';
s = s.toLowerCase();
let len = s.length;
for (let i = 0; i < Math.floor(len / 2); i++) {
if (s[i] != s[len - i - 1]) return 'NO';
}
return answer;
}
str.toLowerCase()
를 사용하면 str 자체를 바꾸는줄 알았는데,
값을 return한다. (여기서 좀 헤맸다)
- 확실히 해설 풀이에 비해 내 코드가 지저분해 보이는 것 같다.
굳이 flag가 필요 없는 경우 그냥 정답 값을 바로 return하는 것도 방법일 것 같다.
방법2) 문자열 함수 대파티
function solution(s) {
let answer = 'YES';
s = s.toLowerCase();
if (s.split('').reverse().join('') != s) return 'NO';
return answer;
}
let str = 'gooG';
console.log(solution(str));
- 물론 방법1이 '알고리즘' 적으로는 더 바람직할 수도 있으나....
문자열 함수를 알고 쓰지 않는 것과 몰라서 못쓰는 것은 차이가 있으므로 알아두자!