티스토리 뷰


1. Java 구현

           
package Q1977;

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int m = (int)Math.ceil(Math.sqrt(Double.parseDouble(br.readLine())));
        int n = (int)Math.sqrt(Double.parseDouble(br.readLine()));

        int sum = 0;
        for (int i = m; i <= n; i++) {
            sum += (i * i);
        }

        if(sum > 0) {
            bw.write(sum + "\n");
            bw.write((m * m) + "\n");
        } else {
            bw.write("-1" + "\n");
        }
        bw.close();
    }
}


2. 코드설명

 처음 문제를 풀었을 때는 입력받은 m 부터 n 까지 반복문을 동작하는 방식으로 풀었다. m과 n은 1 ~ 10000 까지 입력이 가능하기 때문에 최악에는 10000번

 반복문을 돌아야 한다. 물론 충분히 처리가 가능하겠지만, 반복문이 동작하는 횟수를 조금 줄일 수 있는 방법을 생각했다.

 m은 입력받은 수보다 큰 완전 재곱수로 변환하고, n은 입력받은 수보다 작은 완전재곱수로 변환해서, m과 n의 크기를 축소해서 반복횟수를 줄였다.


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/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
글 보관함