문제 설명

앞에서부터 읽을 때와 뒤에서부터 읽을 때 똑같은 단어를 팰린드롬(palindrome)이라고 합니다. 예를들어서 racecar, 10201은 팰린드롬 입니다.

두 자연수 n, m이 매개변수로 주어질 때, n 이상 m 이하의 자연수 중 팰린드롬인 숫자의 개수를 return 하도록 solution 함수를 완성해 주세요.

 

 

 

제한사항

m은 500,000이하의 자연수이며, n은 m 이하의 자연수입니다.

입출력 예

n m result
1 100 18
100 300 20

 

 

 

 

문제풀이

/*
팰랜드롬이 가진 대칭성에 초점을 두어 인덱스를 탐색하여 해당 값이 같은지 비교하는 문제이다.
m의 값은 최대 500,000 이므로 고려해야 할 자릿수는 최소 1자리, 최대 6자리로 상정한다.
*/


class Solution {    
    public int cntPalindrome (int n, int m) {        
        int answer = 0; // 팰린드롬의 갯수 초기 값      

        for (int i = n; i <= m; i++) {            
            String temp = Integer.toString(i);   

            if (temp.length() == 1) { // 1자리 수 (ex. 3)               
                answer++;            
            } else if((temp.length() == 2)                      
              && (temp.charAt(0) == temp.charAt(1))) { // 2자리 수 (ex. 22)   
                answer++;            
            } else if((temp.length() == 3)                       
              && (temp.charAt(0) == temp.charAt(2))) { // 3자리 수 (ex. 232)     
                answer++;            
            } else if((temp.length() == 4)                       
              && (temp.charAt(0) == temp.charAt(3))                       
              && (temp.charAt(1) == temp.charAt(2))) { // 4자리 수 (ex. 2442)                
                answer++;            
            } else if((temp.length() == 5)                     
              && (temp.charAt(0) == temp.charAt(4))                       
              && (temp.charAt(1) == temp.charAt(3))) { // 5자리 수 (ex. 24342)                
                answer++;            
            } else if((temp.length() == 6)                      
              && (temp.charAt(0) == temp.charAt(5))                       
              && (temp.charAt(1) == temp.charAt(4))                      
              && (temp.charAt(2) == temp.charAt(3))) { // 6자리 수 (ex. 244442)                
                answer++;            
            } else {                
                continue;            
            }        
        }        
        return answer;    
    }
}

 

 

 

후기

다중 if문의 조건에서 인덱스의 위치를 직접 지정하는게 아닌 특정 규칙으로 첫 번째와 마지막 인덱스를 비교하는 등 좀 더 좋은 방식의 코드로 수정할 수 있을거 같다...