프로그래머스 문제풀이/Level 0

순서쌍의개수 (자바, Java)

뮤츠 2022. 11. 26. 23:46

브루트포스로 풀어도 상관없지만,

효율적인 풀이를 위해, n^(1/2) 까지만 반복문을 돌렸다.

왜냐하면 n^(1/2) 이후의 약수들은, 그 이전의 약수와 순서쌍으로 이어져서 순서만 바꿔주면 되기 때문.

주의할 점은, 제곱수는 순서쌍이 똑같아 1개만 추가해줘야한다는 점이다.

 

class Solution {
    public int solution(int n) {
        int answer = 0;
        for (int i=1; i<=Math.sqrt(n); i++) {
            if (i==Math.sqrt(n)) {
                answer+=1;
            } else if (n%i==0) {
                answer+=2;
            }
        }
        return answer;
    }
}