풀었다
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;
}
}