[프로그래머스] 약수 구하기

이강혁·2023년 9월 8일
0

프로그래머스

목록 보기
6/79
post-custom-banner

문제 설명

정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.

제한 사항

  • 1 ≤ n ≤ 10,000

입출력 예

n	result
24	[1, 2, 3, 4, 6, 8, 12, 24]
29	[1, 29]

입출력 예 설명

입출력 예 #1

  • 24의 약수를 오름차순으로 담은 배열 [1, 2, 3, 4, 6, 8, 12, 24]를 return합니다.

입출력 예 #2

  • 29의 약수를 오름차순으로 담은 배열 [1, 29]를 return합니다.

코드

function solution(n) {
	var answer = [];

	for(let i =1;i<=n;i++){
    	if(n%i==0){
    	    answer.push(i);
   		 }
	}
	return answer;
}

나머지 0일 때마다 push

다른 풀이

function solution(n) {
return Array(n).fill(0).map((v, index) => v+index+1)
			.filter((v) => n%v===0);
}

n칸의 0으로 초기화된 배열을 만들고 map으로 각 칸의 인덱스 +1의 값을 넣은 뒤에 다시 나머지가 0인 것만 걸러냄.

function solution(n) {
	let s = new Set();
	for (let i = 1; i <= Math.sqrt(n); i++) {
   	   if (n%i === 0) {
   	      s.add(i);
      	  s.add(n/i);
    	}
	}
	return [...s].sort((a,b)=>a-b);
}

n의 제곱근을 기준으로 양 끝에서 가운데로 오면서 약수 배열에 추가하는 모양.
마지막에 정렬해줌. 복잡도는 O(n^(1/2))인 듯.

profile
사용자불량
post-custom-banner

0개의 댓글