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);
}
}