본문 바로가기

코딩테스트

순서쌍의 개수

풀었다

 

import java.util.*;

public class NumberOfTwins {
    /**
     * 순서쌍이란, 두개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a,b)로 표현한다
     * 자연수 n 이 매개변수로 주어질 때,
     * 두 숫자의 곱이 n인 자연수 순서쌍의 개수를 return하도록 solution을 완성하기
     * n = 20일 때, 곱이 20인 순서쌍은 (1,20), (2,10), (4,5), (5,4), (10,2), (20,1) 이므로 6을 return
     * n = 100일 때, 곱이 100인 순서쌍은 (1,100), (2,50), (4,25), (5,20), (10,10), (20,5), (25,4), (50,2), (100,1)
     * 이므로 9를 return
     */
    public int solution(int n) {
        int answer = 0;
        Map<Integer, Integer> map = new HashMap<>();
        
        for(int i=1; i<=n; i++) {
        	if(n%i == 0) {
        		map.put(i, n/i);
        	}
        }
        System.out.println("map : " + map.toString());
        answer = map.size();
        return answer;
    }
    
    public static void main(String[] args) {
    	NumberOfTwins twin = new NumberOfTwins();
    	System.out.println(twin.solution(100));
    }
}

 


 

answer(카운트) 를 ++ 하면서 푸는 방법

    public int solution2(int n) {
        int answer = 0;

        for(int i=1; i<=n; i++) {
            if(n%i == 0) {
                answer++;
            }
        }
        return answer;
    }

 

 


한수 배워야하는 대단한 수식, 제곱근을 활용함

class Solution {
    public int solution(int n) {
        if(n < 2) return n;
       int answer = 2; // 1과 자기자신
        for(int i=2; i<Math.sqrt(n+1); i++){
            if(n % i == 0){
                answer += i == n / i ? 1 : 2;
            }
        }
        return answer;
    }
}

 

'코딩테스트' 카테고리의 다른 글

진료순서 정하기  (0) 2026.05.19
배열 자르기  (0) 2026.04.30
문자 반복 출력하기  (0) 2026.04.22
짝수 홀수 개수  (0) 2026.04.22
문자열 뒤집기  (0) 2026.04.12