알고리즘 출처 : 프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/120808
약수를 구하는 문제이다.
function solution(n) {
const answer = [];
for (let i = 1; i <= n; i++) {
if (n % i === 0) {
answer.push(i);
}
}
return answer;
}
- 제곱근 이하의 숫자중에 n 을 i로 나눈 나머지의 값이 0이면
- i는 n의 약수이다.
- n을 i로 나눈 값도 n의 약수이다.
그러므로 아래와 같은 코드를 갖게된다.
function solution(n) {
const numberSet = new Set();
for (let i = 1; i <= Math.sqrt(n); i++) {
if (n % i === 0) {
numberSet.add(n / i);
numberSet.add(i);
}
}
return [...numberSet].sort((a,b) => a-b);
}
문제를 푸는 것도 중요하지만
다양한 접근 패턴을 이해하여 적재적소에 사용하면 더 좋은 결과물을 얻을 수 있다.