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