상세 컨텐츠

본문 제목

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

Programming/Algorithm

by 겨리! 2022. 11. 4. 16:41

본문

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/120897#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

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

 

function solution(n) {
// 만약 n이 16 이라면  Math.sqrt(16)의 값은 4
// i < 4 로 비교하니 1,2,3으로 돌아감
// 이 부분 i <= 4 로 계속 비교해서 틀렸음 내가 제곱근 개념을 잘 몰라서 틀리는 것 같다.

    let answer = [];
    for(let i = 1; i < Math.sqrt(n); i++){
        if(n % i === 0){
            answer.push(i);
            answer.push(n/i);
			// 조건에 맞으면 관련 값 배열에 push
        }
    }  

    if (Number.isInteger(Math.sqrt(n))) answer = [...answer, Math.sqrt(n)];  
	// 제곱근의 값이 정수이면(딱 떨어진다면 배열에 추가) 
	// n이 16이라면 해당 값은 4

    answer.sort((a,b)=> a-b);
	// 오름차순으로 정렬 후 리턴 
    return answer;
}

 

※ Math.sqrt()함수는 숫자의 제곱근을 반환한다.

Math.sqrt(9); // 3
Math.sqrt(2); // 1.414213562373095
Math.sqrt(1);  // 1

 

관련글 더보기

댓글 영역