관리 메뉴

생각하는 개발자

프로젝트 오일러 :: 06번 문제풀이 :: java 본문

Programming/프로젝트 오일러 문제풀이

프로젝트 오일러 :: 06번 문제풀이 :: java

생각하는 디빌리 2018.08.02 19:32




문제

1부터 10까지 자연수를 각각 제곱해 더하면 다음과 같습니다 (제곱의 합).
12 + 22 + ... + 102 = 385
1부터 10을 먼저 더한 다음에 그 결과를 제곱하면 다음과 같습니다 (합의 제곱).
(1 + 2 + ... + 10)2 = 552 = 3025
따라서 1부터 10까지 자연수에 대해 "합의 제곱"과 "제곱의 합" 의 차이는 3025 - 385 = 2640 이 됩니다.
그러면 1부터 100까지 자연수에 대해 "합의 제곱"과 "제곱의 합"의 차이는 얼마입니까?



연구

문제만 봐도 로직이 생각날 정도로 매우 직관적이고 간단한 문제다.

변수를 1부터 100까지 증가시키면서 '제곱의 합' 과 '합의 제곱' 을 구해 두 값의 차를 구하면 될 것 같다.



풀이

'제곱의 합' 과 '합의 제곱' 을 구할 변수타입을 long으로 선언하고 연구에서 말한 로직을 구현했다.

public class Problem_06 {
       void solution() {
              long x = 0, y = 0;
              for (int i = 1; i < 101; i++) {
                     x += (i * i);
                     y += i;
              }
              y *= y;
              System.out.println(y-x);
       }
}

간단한 로직이므로 추가 설명은 생략한다.



결과

25164150
total time(ms): 0.182694




마치며

전 문제에 비해 난이도가 상당히 떨어졌다.

보너스 스테이지 같은 느낌이랄까.


github

0 Comments
댓글쓰기 폼