티스토리 뷰

Project Euler

프로젝트 오일러

 

Problem 4

대칭수 중 가장 큰 수 구하기

앞에서부터 읽을 때나 뒤에서부터 읽을 때나 모양이 같은 수를 대칭수(palindrome)라고 부릅니다.

두 자리 수를 곱해 만들 수 있는 대칭수 중 가장 큰 수는 9009 (= 91 × 99) 입니다.

세 자리 수를 곱해 만들 수 있는 가장 큰 대칭수는 얼마입니까?


Hint

문자를 String으로 변환하여 Search!


Answer

public class Problem04 {

public static void main(String[] args) {
int digit = 3; //자릿수

int palindrome = getPalindrome(digit);
System.out.println("palindorme : "+palindrome);
}

public static int getPalindrome(int digit) {
int maxPalindrome = 0;
for(int i=999; i>99; i--){
for(int j=999; j>99; j--){
int mainNumber = i*j;
boolean isPalindrome = checkPalindrome(mainNumber);
if(isPalindrome && (mainNumber > maxPalindrome)){
maxPalindrome = mainNumber;
}
}
}

return maxPalindrome;
}

private static boolean checkPalindrome(int mainNumInteger) {
String mainNum = String.valueOf(mainNumInteger); //숫자를 String으로 변환
int len = mainNum.length(); //숫자의 자릿수

for(int i=0; i<len/2; i++){
char ch1 = mainNum.charAt(i);
char ch2 = mainNum.charAt(len-(i+1));
if(ch1 == ch2) continue;
else return false;
}

return true;
}
}


댓글
댓글쓰기 폼
공지사항
Total
37,833
Today
31
Yesterday
37
링크
TAG
more
«   2018/05   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
글 보관함