728x90
반응형
약수의 합
문제 설명
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
제한 조건
😇n은 0 이상 3000이하인 정수입니다.
입출력 예시
n | return |
---|---|
12 | 28 |
5 | 6 |
😇내가 한 풀이
for()문과 if()문으로 간단하게 해결하였다!
const n = 12;
function solution(n) {
var answer = 0;
for(let i = 1; i <= n; i++){
if(n % i == 0){
answer += i;
}
}
return answer;
}
😇다른 풀이
오... 삼항연산자를 중복해서 사용할 수 있다는것을 배워간다...!하지만, 가독성이 떨어진다는 의견이 많다...
function solution(n, a=0, b=0){
n <= a / 2 ? b : solution(n, a + 1, (b += n % a ? 0 : a));
}
😇다른 풀이2
밖에다가 선언하는게 인상적인 풀이였다...!
function solution(n) {
var answer = 0;
let i;
for (i = 1; i <= Math.sqrt(n); i++){
if (!(n%i)) {
answer += (i+n/i);
}
}
i--;
return (i === n/i) ? answer-i : answer;
}
'알고리즘 공부' 카테고리의 다른 글
프로그래머스 1단계 - 가운데 글자 가져오기 (1) | 2022.11.18 |
---|---|
프로그래머스 1단계 - 정수 내림차순으로 배치하기 (2) | 2022.11.17 |
프로그래머스 1단계 - 자연수 뒤집어 배열로 만들기 (1) | 2022.11.16 |
프로그래머스 1단계 - 문자열을 정수로 바꾸기 (2) | 2022.11.14 |
프로그래머스 1단계 - 문자열 내 p와 y의 개수 (1) | 2022.11.13 |
댓글