Algorithm/기타

[백준 1977번] 완전제곱수

agility 2019. 12. 20. 17:16

백준알고리즘 1977번 : 완전제곱수

 

 

 

완전제곱에 대한 조건문을 언제부터 돌려야하나.. 싶었는데 기우였다.

왜냐하면 최솟값과 최댓값이 1에서부터 10000까지 이기때문에,

1부터 시작해서 조건을 돌려도 100번밖에 돌지 않기때문이다.

조건이 더 넓어지면 이렇게 단순하게는 안되겠지만..

 

 

 

 

풀이 과정


1. for문을 반복하여 늘어나는 숫자들의 제곱값과 minimum 값을 비교한다.
2. i*i의 값이 minimum 값보다 크거나 같다면, 해당 값을 변수에 집어넣는다.
3. 그 후로 maximum 값이 i*i의 값보다 커질때 까지 for문을 반복하며 해당 값들을 더해준다.
4. 단, 2번에서 집어넣은 값이 없이 maximum값이 i*i의 값보다 커져버렸다면, 변수에 -1을 넣는다.
5. 또한, 2번의 변수 값이 -1이라면, 총 합을 출력하지 않는 조건식을 추가한다.

 

 

 

<< 백준알고리즘 1977번 반례 >>

 100 100
 99 99

 

 

 

 

소스 ▽

더보기
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int min = sc.nextInt();
		int max = sc.nextInt();
		int sum = 0;
		int ans = 0;
		for (int i = 1; i <= 100; i++) {
			if (i * i > max) {
				if (ans == 0) {
					ans = -1;
				}
				break;
			}

			if (i * i >= min) {

				if (ans == 0) {
					ans = i * i;
				}
				sum += i * i;
			}

		}
		if (sum != 0) {
			System.out.println(sum);
		}
		System.out.println(ans);

	}

}