반응형
세 자리수 두 개를 곱해 만들 수 있는 최대 대칭수를 찾는 문제입니다.
대칭수는 양 끝에서 좁혀 오며 확인합니다
곱한 결과를 문자열로 바꾼 뒤 배열로 쪼개고, 인덱스를 양 끝(k는 앞에서, l은 뒤에서)에 두고 가운데를 향해 좁혀 오면서 문자를 비교합니다. 한 번이라도 다르면 대칭이 아니므로 즉시 중단합니다.
package euler;
public class Euler004 {
public static void main(String[] args) {
//세 자리수 두 개를 곱해서 만들 수 있는 최대 대칭수
int result =0;
int max =0;
//세 자리수 곱하기 반복문 시작
for (int i = 999; i >99 ; i--) {
for (int j = 999; j >99; j--) {
//곱 결과 저장
result = i*j;
//곱 결과 값을 문자열로 변환
String strResult = String.valueOf(result);
//변환한 문자열을 하나씩 잘라서 배열에 저장
String[] value = strResult.split("");
//플래그 변수들
boolean run = false;
boolean flag = true;
//대칭 비교용 배열 인덱스 변수
int k = 0;
int l = value.length-1;
//양 끝에서부터 값을 비교
while(flag) {
if ( value[k].equals(value[l]) ) {
run = true;
k++;
l--;
if (k == value.length) {
flag = false;
}
} else {
run = false;
flag = false;
}
}
if( run == true ) {
System.out.print(i + " x ");
System.out.print(j + " = ");
System.out.println(result);
break;
}
}
if(result >= max) {
max = result;
}
}
System.out.println(max);
}
}반응형
'IT·테크 > 개발' 카테고리의 다른 글
| Java System.out·System.err를 SLF4J 로거로 리다이렉트하기 (0) | 2026.07.29 |
|---|---|
| Docker Swarm — 여러 도커 호스트를 하나의 클러스터로 묶기 (0) | 2026.07.28 |
| Java 멀티 스레드 — Thread와 Runnable로 작업 만들고 synchronized로 지키기 (0) | 2026.07.28 |
| Java 입출력 — 바이트·문자 스트림과 보조 스트림으로 기능 얹기 (0) | 2026.07.28 |
| Java JDBC — 드라이버 로드부터 Statement·PreparedStatement·ResultSet까지 (0) | 2026.07.28 |