앞에서부터 읽을 때 뒤에서부터 읽을 때 똑같은 단어를 팰린드롬(palindrome)이라고 합니다. 예를 들어서 racecar, 10201은 펠린드롬입니다.
두 자연수 n, m이 매개변수로 주어질 때, n 이상 m이하의 자연수 중 팰린드롬인 숫자의 개수를 return 하도록 solution 함수를 완성해야 합니다.
제한사항
m은 500, 000이하의 자연수이며, n은 m이하의 자연수입니다.
let answer = 0;
function solution(n, m){
if(n>m) return;
for(let i=n; i<=m; i++){
checkPalindrome(String(i));
}
return answer;
}
function checkPalindrome(num){
if(num.length ===1){
answer++;
return;
}
let j = num.length - 1;
let jSize = parseInt(num.length/2);
let count = 0;
for(let i = 0; i<jSize; i++,j--){
if(num.charAt(i) === num.charAt(j)){
count++;
}
}
if(count === jSize){
answer++;
}
}
solution
함수에서
let i의 값은 매개변수로받은 n값이고 i는 m(주어진 수의 범위중 max범위)
까지 반복문을 사용하였고 checkPalindrome
함수를 실행시킨다.
checkPalindrome
함수에서
조건문을 이용해 매개변수로 받은 num
의 length
가 1일때는 answer
(개수)
를 추가해주고 리턴시킨다(1의 자리숫자들은 팰린드롬을 하나씩 가지기때문)
인덱스값을 비교하는 조건문을 사용하기위해
1부터 시작되는 length
의 값에서 -1을 한
let j = num.length-1
앞뒤로 모든쌍이 팰린드롬이 맞는지 판별하기위한 인덱스를 설정해주기위해
let jSize = num.length/2
한 쌍의 팰린드롬이 맞을때 ++시켜줄
let count = 0;
각각 변수로 설정해주었다.
다음 jSize
값의 횟수만큼 반복문을 실행시켜주었는데
여기서 조건문을 추가해주었다.
num
의 charAt
을 사용하여 앞뒤의 팰린드롬이 맞는지. 맞다면
count++
을 해준다.
for반복문을 벗어나서 또 다른 조건문을 추가해주었는데
팰린드롬의 개수가 들어있는 count
와 jSize
를 비교하고
같을 경우에 비로소 answer
(개수)를 추가시켜준다.
처음엔 count
를 설정안해줘서 모든쌍이 팰린드롬이 맞는지 판별이 안되고 answer
를 추가해주는바람에 오답이 나왔고 count
를 추가해주니 문제가 생기지 않았다.