[프로그래머스] 약수의 합(Java)

Yoon Uk·2022년 10월 8일
0
post-thumbnail

문제

[프로그래머스] 약수의 합
https://school.programmers.co.kr/learn/courses/30/lessons/12928

풀이

  • Math.sqrt() 메소드를 사용하여 시간복잡도를 낮췄다.
  • 입력받은 수가 완전제곱일 때아닐 때를 나눠서 합을 구했다.

코드

import java.util.*;

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        double k = Math.sqrt(n);
    	
    	for(int i=1; i<=k; i++) {
    		if(n % i == 0) {
    			
    			if(i*i != n) {
    				answer += i;
        			answer += n/i;	
    			} 
                // 완전제곱일 때
                else {
    				answer += i;
    			}
    		}
    	}
        
        return answer;
    }
}

정리

  • 9, 16 등 완전제곱수의 경우를 체크하지 못해서 처음에 85점이 나왔다.

0개의 댓글