문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
풀이 1
function solution(n) {
let sum = 0;
for (let i = 1; i <= n; i++) {
if (n % i === 0) {
sum += i;
}
}
return sum;
}
많은 사람들이 푼 방식이다. n 크기 만큼 반복문으로 약수 조건 확인하는 방식!
풀이 2
const solution = (n) =>
Array.from({ length: n }, (_, i) => i + 1)
.filter(i => n % i === 0)
.reduce((sum, i) => sum + i, 0);
Array 메서드를 사용하여 각 단계가 무엇을 하는지 명확하게 보여주도록 변경해보았다. (ES6 문법으로 변경해본 것임..)
- Array.from 메서드를 사용하여 1부터 n까지의 숫자가 포함된 배열을 생성
- { length: n }: 길이가 n인 배열 생성
- (_, i) => i + 1: 배열의 각 요소를 1부터 n까지로 초기화
- filter 메서드를 사용하여 n의 약수 필터링
- i => n % i === 0: n을 i로 나눈 나머지가 0인 요소만 남김
- reduce 메서드를 사용하여 필터링된 요소의 합 계산
- (sum, i) => sum + i, 0: 초기값을 0으로 설정하고, 배열의 요소를 하나씩 더하기
'코딩문제풀기' 카테고리의 다른 글
[백준/9012] 괄호 (0) | 2024.10.16 |
---|---|
[프로그래머스/12916] 문자열 내 p와 y의 개수 (2) | 2024.07.22 |
[프로그래머스/12931] 자릿수 더하기 (0) | 2024.07.18 |
[프로그래머스] 두 수의 차 (0) | 2024.06.05 |
[백준/10828] 스택 (0) | 2024.06.05 |