곽로그

[백준 1977] 완전제곱수 본문

알고리즘/백준

[백준 1977] 완전제곱수

일도이동 2019. 5. 3. 00:45
반응형

 

 

1977번: 완전제곱수

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

www.acmicpc.net

문제접근

 M과 N의 범위에 따라 어떻게 처리 해야하는지를 구현하면 된다. 즉, 1(num)부터 시작해서 num의 제곱이 M보다 작으면 num을 1증가시키고 N보다 작거나 같으면 배열에 num의 제곱을 ArrayList에 추가하고 num을 1 증가시킨다. 그 외의 경우에 반복문을 빠져나온다.

 

 

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int M=in.nextInt();
		int N=in.nextInt();
		ArrayList<Integer> completes=new ArrayList<Integer>();
		
		int num=1;
		while(true) {
			int complete=num*num;
			if(complete<M) {
				num++;
			}
			else if(complete<=N) {
				completes.add(complete);
				num++;
			}
			else
				break;
		}
		
		
		if(completes.isEmpty()) {
			System.out.println(-1);
		}
		else {
			int min=completes.get(0);
			int sum=0;
			for(int i:completes) {
				sum+=i;
			}
		
			System.out.println(sum);
			System.out.println(min);
		}
		
	}

}
반응형

'알고리즘 > 백준' 카테고리의 다른 글

[백준 10250] ACM호텔  (0) 2019.05.07
[백준 2839] 설탕배달  (0) 2019.05.03
[백준 1193] 분수찾기  (0) 2019.04.26
[백준 2292] 벌집  (0) 2019.04.25
[백준 10039] 평균점수  (0) 2019.04.25
Comments