본문 바로가기

[Project Euler] Problem 009



이 문제에서 만족해야 할 a, b, c의 조건은 다음의 세 가지다.


① a, b, c는 a < b < c인 자연수 

② a² + b² = c²

③ a + b + c = 1000


내 풀이의 핵심은 조건 ③이다.

c를 우변으로 이항하면  a + b = 1000 - c 임을 이용했다.


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
package q001_q025;
 
public class Problem009 {
    
    public static void main(String[] args) {
        System.out.println(run());
    }
    
    public static String run() {
        int a, b, c;
        int result = 0;
        
        for(a = 1; a <= 332++a) {
            for(b = a + 1; b <= 499++b) {
                c = 1000 - a - b;
                
                if(a*+ b*== c*c) {
                    result = a*b*c;
                    return Integer.toString(result);
                }
            }
        }
        
        return Integer.toString(result);
    }
 
}
cs


조건 ①에 의해 b = a + 1이 되고,

조건 ①과 ③에 의해 c = 1000 - (a + b) = 1000 - a - b가 된다.

 

a=332, b=333, c=335일 때 a는 최대값을 갖고

a=1, b=499, c=500일 때 b는 최대값을 갖는다.


따라서 반복문의 조건도 이에 맞춰 설정한다.












'Programming > Solutions' 카테고리의 다른 글

[BAEKJOON] 1193번  (0) 2019.04.06
[Project Euler] Problem 010  (0) 2019.03.31
[BAEKJOON] 1011번  (0) 2019.03.26
[Project Euler] Problem 008  (0) 2019.03.25
[BAEKJOON] 1152번  (0) 2019.03.25