Print
카테고리: [ Algorithm ]
조회수: 3360

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

palindrome은 앞에서부터 읽을 때와 뒤에서 읽을 때 똑같은 단어를 뜻합니다.

예를 들어서 abcdeedcba, racecar, 10201은 palindrome 입니다.

처음 이 문제를 접했을 때 일단 매개변수로 주어진 범위내의 자연수 중에서 palindrome 을 찾는 것이기 때문에 인덱스로 문자를 비교하자는 생각이 들었습니다.

그래서 매개변수로 받은 n부터 m까지의 자연수를 ArrayList에 넣고 처음과 끝을 비교해가며 비교를 했습니다.


import java.util.ArrayList;

public class Palindrome1 {
    public int palindrome(int n, int m) {
        int answer = 0;

        ArrayList<String> strAl = new ArrayList<String>();
        for (int i = n; i <= m; i++) {
            strAl.add(Integer.toString(i));
        }

        for (int j = 0; j < strAl.size(); j++) {
            int startInx = 0;//처음
            int endInx = strAl.get(j).length() - 1;//            while (true) {
                if (strAl.get(j).charAt(startInx) == strAl.get(j).charAt(endInx)) {//양쪽비교
                    startInx++;
                    endInx--;
                    if ((startInx >= endInx)) { //양쪽 다같음
                        answer++;
                        break;
                    }
                } else {
                    break;
                }
            }
        }
        return answer;
    }
}