Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

luke

[백준] - 완전제곱수 (1977) (자바/Java) 본문

알고리즘문제/백준 문제(Java)

[백준] - 완전제곱수 (1977) (자바/Java)

luke-king 2024. 5. 15. 17:25

 

 

 

 

 

문제 : https://www.acmicpc.net/problem/1977

 

 

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

 

풀이.


 

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        int n = sc.nextInt();
        sc.close();

        int sum = 0;
        int min = Integer.MAX_VALUE;
        for (int i = 1; i <= 100; i++) {
            int res = 0;
            res = (int)Math.pow(i, 2);
            for (int j = m; j <= n; j++) {
                if (res == j) {
                    min = Math.min(j, min);
                    sum += j;
                }
            }
        }
        if (sum == 0) {
            System.out.println(-1);
        } else {
            System.out.println(sum);
            System.out.println(min);
        }

    }

}

 

오늘 문제는 " 완전제곱수 " 문제다.

우선 완전제곱 이란 어떤 자연수의 제곱을 말한다. 이번 문제는 m, n의 입력값이 주어지고 그 사이에

완전제곱수끼리의 합과 제곱수의 최소값을 찾는 문제다.

그럼 바로 풀이 해보겠다.

 

1. 제곱근의 합을 담을 sum 변수, 제곱근 중 최소값을 구하기 위한 min 변수를 만들었다.

 

2. 문제에 m, n은 10000 이하의 자연수라 했기에 1부터 100까지의 루프만 돌려준다.

 

3. Math.pow() 함수를 사용해 i의 2 제곱 즉 i의 제곱 값을 만들어 res변수에 담아준다.

 

4. 다음 반복문을 통해 m과 n사이에 있는 수들을 조건식 res 제곱근과 j의 자연수가 같을 경우 같은 제곱근의 값을 더해준다. 또 그중 최소값을 찾아 min에 담아준다. 

 

5. 제곱근이 없을 경우 -1을 출력하기에 sum 이 0일 경우 -1을 출력해 준다. 그 외에는 합한 값과 최소값을 출력한다.