알고리즘

[프로그래머스, 자바] 약수의 합

hminor 2024. 3. 20. 11:41

풀이

  • 간단한 문제이지만 알지 못했던 자바 메서드를 사용했기에 정리하려 포스팅.
  • 파이썬에서는 int(x**(1/2))와 같이 작성하면 되는걸
  • 자바에서는 어떻게 작성해야하나 싶었는데 
  • 우선 Math.sqrt(x)를 넣어주게 되면 되고 이걸 Math.floor() 에 넣어줘서 소수 부분을 버리기.
  • 이후 (int)로 정수화 시켜 해결.
  • 그리고 만약 (1/2)가 아닌 가변의 값이라면 어떻게 해야하는지 궁금해서 찾아보니
  • Math.pow()로 첫 번째 인자로 x를 넣고, 두 번째 인자로 원하는 값을 넣는 건데
  • 이때 모든 인자의 값은 정수가 아닌 실수로 넣어줘야 한다는 것을 주의하기
  • 해결 코드 아래에 Math.pow()적용 법에 대한 코드 또한 함께 첨부.

 

class Solution {
    public int solution(int n) {
        int result = 0;
        for (int i=1; i<= (int) Math.floor(Math.sqrt(n)); i++) {
            if (n%i==0) {
                int x = n/i;
                if (x!=i) result += x;
                result += i;
            }
        }
        return result;
    }
}

 

 

public class Main {
    public static void main(String[] args) {
        double base = 16; // 기준값
        double exponent = 0.5; // 1/2는 제곱근을 의미

        double result = Math.pow(base, exponent); // 제곱근 계산
        int intResult = (int) Math.floor(result); // 소수 부분을 버리고 정수로 변환

        System.out.println(intResult); // 결과 출력
    }
}