다희의 코딩 성장일기
[프로그래머스] level1. 약수의 합 (자바 JAVA) 본문
[ 문제 ] [프로그래머스] level1. 약수의 합 (자바 JAVA)
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12928
# 접근 방법 및 풀이
- n이 3000이기 때문에 범위가 크지않아 for문으로 i를 1부터해서 나누어 떨어지면 약수이기때문에 해당 i를 더해서 해도 되지만 n이 커지면 범위를 제곱근까지 해줘야한다.
- ex) n = 12일때, 12의 약수는 1, 2, 3, 4, 6, 12이다. 이때 12의 제곱근은 3.xxx이기 때문에
- i를 1, 2, 3까지만해도 1*12, 2*6, 3*4로 모든 약수를 구할 수 있다.
- i로 나누어 떨어질 때의 i와 n을 i로 나눈 몫이 약수가 된다.
# 주의할 점
- 몫과 i가 같은 순간 두번 더하지 않게 조심해야한다.
- ex) 1, 2, 4 -> 1*4 , 2*2
JAVA 코드
import java.util.*;
class Solution {
public int solution(int n) {
int answer = 0;
for(int i = 1; i <= Math.sqrt(n); i++){
if(n%i==0){
answer += i;
if(n/i != i)
answer += n/i;
}
}
return answer;
}
}
REVIEW
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] level1. 이상한 문자 만들기 (자바 JAVA) (0) | 2021.08.20 |
---|---|
[프로그래머스] level1. 서울에서 김서방 찾기 (자바 JAVA) (0) | 2021.08.20 |
[프로그래머스] level1. 최대공약수와 최소공배수 (자바 JAVA) (0) | 2021.08.20 |
[프로그래머스] level1. 수박수박수박수박수박수? (자바 JAVA) (0) | 2021.08.20 |
[프로그래머스] level1. 자연수 뒤집어 배열로 만들기 (자바 JAVA) (0) | 2021.08.20 |
Comments