Algorithm/BOJ(Baekjoon Online Judge)

[백준 - 1977번] 완전제곱수 - Java //Wello Horld//

koucop 2020. 1. 3. 14:45

이번에는 BOJ의 1977번 문제 "완전제곱수" 를 풀어보도록 하자

 

입력으로 첫째 줄에 M이, 둘째 줄에 N이 주어진다.

출력으로 M이상 N이하의 자연수 중 완전제곱수인 것을 모두찾아 첫째 줄에 그들의 합을, 둘째 줄에 그중 최솟값을 구하면 되는 문제이다.

성공한 코드는 아래와같다.

import java.io.*;
import java.util.*;

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

        boolean[] wan = new boolean[10001];
        for (int i = 1; i * i <= 10000; i++) {
            wan[i * i] = true;
        }
        int M = Integer.parseInt(br.readLine());
        int N = Integer.parseInt(br.readLine());
        int ans = 0;
        int min = -1;
        for (int i = M; i <= N; i++) {
            if (wan[i]) {
                if (min == -1)
                    min = i;
                ans += i;
            }
        }
        if (ans == 0)
            bw.write(-1 + "\n");
        else
            bw.write(ans + "\n" + min + "\n");

        bw.flush();
        br.close();
        bw.close();
    }
}

 

 

문제 : https://www.acmicpc.net/problem/1977

 

1977번: 완전제곱수

M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 완전제곱수는 64,  81,  100 이렇게 총 3개가 있으므로 그 합은 245가 되고 이 중 최솟값은 64가 된다.

www.acmicpc.net

 

혹시 코드에 이상한 부분이나 틀린 부분이 있던지, 이해가 안가는 부분이 있다면 댓글로 알려주세요.