< 문제 >
- 개요
세 자연수 a, b, c 가 피타고라스 정리 a² + b² = c² 를 만족하면 피타고라스 수라고 부릅니다.(여기서 a < b < c) 예를 들면 3² + 4² = 5² 이므로 3,4,5는 피타고라스 수입니다. a + b + c = 1000 인 피타고라스 수 a,b,c는 한가지 뿐입니다. 이 때, a × b × c 는 얼마일까요?
- 예상 결과
예상 결과는 하기 코드 실행시 예상되는 결과 값이다.
결과 : a × b × c : 31875000
< 정답풀이 >
public class test06 {
private static final String result = "결과 : a × b × c : %d";
public static void main( String[] args ) {
// 시작시간 기록
long startTime = System.currentTimeMillis();
// STEP.1 조건을 만족하는 피타고라스 수의 곱 구하기
int answer = pythagoras();
System.out.println( String.format( result, answer ) );
// 종료시간 기록
long endTime = System.currentTimeMillis() - startTime;
System.out.println( "소요시간 : " + endTime + "ms." );
}
/**
* <PRE>
* 조건을 만족하는 피타고라스 수의 곱을 구한다.
* </PRE>
*
* @return 피타고라스 수의 곱
*/
public static int pythagoras() {
int result = 0; // 결과값 저장을 위한 변수
// a 는 1부터 시작하며 333보다 작은 값이다.
for ( int a = 1 ; a < 1000 / 3 ; a++ ) {
// b는 a보다 커야하며 c보다는 작아야한다.
for ( int b = a + 1 ; b < 1000 - (a + b) ; b++ ) {
// a + b + c = 1000이다.
int c = 1000 - (a + b);
// 피타고라스 수의 곱 조건을 만족하는 a,b,c를 찾는다.
if ( a * a + b * b == c * c ) {
result = a * b * c;
break;
}
}
}
return result;
}
}