본문 바로가기
Problem Solving/Baekjoon

[백준] 1977 완전제곱수 - Brute Force / Java

by graycode 2024. 1. 23.

 문제 링크

 

1977번: 완전제곱수

M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 완

www.acmicpc.net

 

 풀이 코드

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int m = read(), n = read(), sum = 0, min = 0;
        for (int i = m; i <= n; i++) {
            if (isPerfectSquare(i)) {
                sum += i;
                if (min == 0) min = i;
            }
        }

        bw.write(min != 0 ? sum + "\n" + min : "-1");
        bw.flush();
    }

    private static boolean isPerfectSquare(int i) {
        int sqrt = (int) Math.sqrt(i);
        return sqrt * sqrt == i;
    }

    private static int read() throws IOException {
        int c, n = System.in.read() & 15;
        while ((c = System.in.read()) > 32) n = (n << 3) + (n << 1) + (c & 15);

        return n;
    }

}

댓글