Skip to content

Latest commit

 

History

History
48 lines (35 loc) · 1.34 KB

File metadata and controls

48 lines (35 loc) · 1.34 KB

순서쌍의 개수

📌 문제 설명

순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a, b)로 표기합니다. 자연수 n이 매개변수로 주어질 때 두 숫자의 곱이 n인 자연수 순서쌍의 개수를 return하도록 solution 함수를 완성해주세요.

제한 조건

  • 1 ≤ n ≤ 1,000,000

입출력 예

n result
20 6
100 9

🧐 접근

제곱근을 사용해서 약수구하는 방식으로 접근

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

💡 풀이

약수의 갯수를 구하는 것과 똑같은 문제다. 그냥 반복문을 수행하는 것보다 제곱근을 이용하면 시간복잡도를 O(n) -> O(√n)로 줄일 수 있다. i값을 1부터 시작해서 제곱근이 아닐때는 (1, 36)처럼 한개의 쌍의 수가 해당되기 때문에 +2를 수행하고 (6)처럼 36의 제곱근인 수일 경우에는 ++연산을 수행해서 개수를 구한다.

📘 그 외의 풀이

==================