[백준(baekjoon) 1977] 완전제곱수 / java Math 함수

2018. 9. 4. 15:45Algorithm

반응형
[백준(baekjoon) 1977] 완전제곱수

문제

백준 1977

m이상 n이하인 완전제곱수들을 구하고 최소 값을 출력하라.

  • 예시 : 60이상 100이하 (64, 81, 100) = 245, 64
  • 주의 : 조건에 해당하는 완전제곱수가 하나도 없다면 -1을 출력한다.

해결

알고리즘

간단한 수학문제이다.
그냥 이 문제를 풀면서 자주 쓰이는 java Math함수들을 정리해봤다.

방법

  1. mn제곱근을 구한다.
    • m의 제곱근은 올림을 해준다. (크거나 작아야 하므로)
    • n의 제곱근은 내림을 해준다. (작거나 같아야 하므로)
  2. 그 사이의 수들을 제곱해준다. = 완전제곱근

구현 java

Math 함수

  • 올림 : Math.ceil(a)
    • 매개변수 타입 : double
    • 반환 타입 : double
  • 내림 : Math.floor(a)
    • 매개변수 타입 : double
    • 반환 타입 : double
  • 반올림 : Math.round(a)
    • 매개변수 타입 : float, double
    • 반환 타입 : float, double
  • 제곱 : Math.pow(a, b) =
    • 매개변수 타입 : double
    • 반환 타입 : double
  • 제곱근 : Math.sqrt(a) =
    • 매개변수 타입 : double
    • 반환 타입 : double
  • 절대값 : Math.abs(a)
    • 매개변수 타입 : int, long, float, double
    • 반환 타입 : int, long, float, double
  • 큰 값 : Math.max(a, b) = a와 b 중 큰 값
    • 매개변수 타입 : int, long, float, double
    • 반환 타입 : int, long, float, double
  • 작은 값 : Math.min(a, b) = a와 b 중 작은 값
    • 매개변수 타입 : int, long, float, double
    • 반환 타입 : int, long, float, double
1.import java.util.*;
2.
3.public class Main {
4. public static void main(String[] args) {
5. Scanner sc = new Scanner(System.in);
6. int m = sc.nextInt();
7. int n = sc.nextInt();
8.
9. int min = (int)Math.ceil(Math.sqrt(m));
10. int sum = 0;
11. for (int i = min; i <= Math.floor(Math.sqrt(n)); i++) {
12. sum += Math.pow(i, 2);
13. }
14.
15. if (sum > 0) {
16. System.out.println(sum);
17. System.out.println((int)Math.pow(min, 2));
18. } else System.out.println(-1);
19.
20. }
21.}

결과

Alt text

반응형