❗ 문제
출처: 프로그래머스 코딩 테스트 연습,
https://school.programmers.co.kr/learn/courses/30/lessons/12928
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해 주세요.
❓ 나의 풀이
function solution(n) {
let answer = 0;
for(let i = 1; i <= n; i++) {
n % i ? null : answer += i;
}
return answer;
}
반복문과 삼항연산자를 이용해서 문제를 풀었다.
12의 약수는 1, 2, 3, 4, 6, 12 이다.
이 숫자들은 모두 12를 나누었을 때 나머지가 0이 되는 수들이다.
이 점을 이용해, 반복문을 사용하여 1부터 12까지, 즉 1부터 n까지의 숫자 중에서 n의 약수를 찾아낼 수 있다.
n % i 가 0 인 경우에만 i 를 더하면 된다.
삼항연산자를 사용해서 조건문을 만들었는데,
삼항연산자에서 물음표(?) 뒤에 오는 부분은 조건이 true 일 때 실행되고, 콜론(:) 뒤에 오는 부분은 조건이 false 일 때 실행된다.
조건문에서 0은 false 로 평가되기 때문에 n % i === 0 이라고 굳이 적지 않아도 된다.
n % 1 가 0 이라면 삼항 연산자에서 false 로 평가되며, answer += i 가 실행되고,
반대로 n % i 가 0 이 아니면 null 이 실행되어 아무 일도 일어나지 않는다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 하샤드 수 (Level 1, JavaScript) (0) | 2024.09.04 |
---|---|
[프로그래머스] 자연수 뒤집어 배열로 만들기 (Level 1, JavaScript) (0) | 2024.08.30 |
[프로그래머스] 세균 증식 (Level 0, JavaScript) (0) | 2024.08.12 |
[프로그래머스] 7의 개수 (Level 0, JavaScript) (0) | 2024.08.05 |
[프로그래머스] 커피 심부름 (Level 0, JavaScript) (0) | 2024.07.31 |