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; //거꾸로 읽은 변수를 리턴한다.
}
내 잘못된 습관이나 아니면 고쳤으면 하는 부분좀 이야기 해 주라 옆에 알려줄 사람들이 없어서 부탁한다
댓글 0