999*999인 수부터 앞으로 읽으나 뒤로 읽으나 똑같은 가장 큰 수를 찾아서 리턴시켜라 라는 문제임


static int LoopCount = 0; //for 문이 몇번 돌았는지 세기 위한 변수

public static void main(String[] args) {

// TODO Auto-generated method stub

int palindrome; //대칭수를 저장하기 위한 변수

palindrome = getBigPalindrome(); // getBigPalindrome 함수를 통하여 대칭수를 계산하여 리턴시킨다.

System.out.println(palindrome);

System.out.println(LoopCount);


}


private static int getBigPalindrome() {

for (int i = 999 * 999; i >= 0; i--){ // 세자리 수를 곱해 만들 수 있는 가장 큰 수는 999*999 이므로 가장 큰 수부터 1씩 줄여가면서 대칭수인지 검사한다.

LoopCount++; // for문 카운트

if (isPalindrome(i)) //대칭수인지 검사하는 isPalindrome 함수

return i; //대칭수가 맞다면 대칭수를 리턴시킨다.

}

// TODO Auto-generated method stub

return 0;

}


private static boolean isPalindrome(int i) {

String number = String.valueOf(i); // 반아온 숫자를 String으로 형변환 시켜준다

String dummy = reverse(number); // dummy를 만들어서반아온 숫자의 반대로  reverse 함수를 통해서 반전시켜주고  저장한다

if (number.equals(dummy)) // 반전시켜준 수와 받아온 수가 같으면 true

return true;

else

return false;

}


private static String reverse(String number) {

// TODO Auto-generated method stub

String reverseNum = ""; //뒤로읽은 숫자를 저장할 변수를 생성

for (int i = number.length()-1; i >= 0; i--){ // String의 length가 만약 5라면 배열인덱스는 4까지 있으므로 length 에서 1을 빼주어 for문을 0까지 돌린다. 

LoopCount++; // for문 카운트

reverseNum += number.charAt(i); // 한 글자씩 거꾸로 읽어들여서 차례차례 reverseNum변수에 더해준다.

}

return reverseNum; //거꾸로 읽은 변수를 리턴한다.

}


내 잘못된 습관이나 아니면 고쳤으면 하는 부분좀 이야기 해 주라 옆에 알려줄 사람들이 없어서 부탁한다