본문 바로가기

Algorithm

[알고리즘] #14 나누어 떨어지는 숫자 배열 | 프로그래머스

728x90

프로그래머스 나누어 떨어지는 숫자 배열 알고리즘 문제.

 

https://programmers.co.kr/learn/courses/30/lessons/12910

 

코딩테스트 연습 - 나누어 떨어지는 숫자 배열

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하

programmers.co.kr

 

 

 


 

 

 

문제 설명

 

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.

 

 

제한사항
  • arr은 자연수를 담은 배열입니다.
  • 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
  • divisor는 자연수입니다.
  • array는 길이 1 이상인 배열입니다.

 

 

입출력 예

 

 

 

 

 


 

 

 

< 문제 풀이 >

 

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
function solution(arr, divisor) {
    let answer = [];
	
    // for in으로 반복
    for (let index in arr) {
    	//나누어 떨어지는 것만 answer 배열에 push
     if(arr[index] % divisor === 0) {
       answer.push(arr[index]);
     } 
    }
	
    // 배열이 빈 이유는 위에서 push 할 때 나누어 떨어지는 게 없어서 아무것도 안 들어갔기 때문.
    if(answer.length === 0){
      return [-1];
    }

	// sort()로 정렬하기
    return answer.sort((a,b) => a-b);
}

 

답을 저장할 새 배열 answer을 만들어 준다. for in 을 사용하여 index와 element값을 참조할 수 있게 한다. 엘리먼트를 divisor로 나눠서 나누어 떨어지는 경우에만  answer에 넣어준다. 그래서 만약 answer 배열에 아무것도 안 들어갔을 경우는 나누어떨어지는 게 없어서이다. 그러므로 배열의 length가 0인 경우에는 -1을 리턴해준다. 마지막으로 오름차순으로 정렬하라고 했기 때문에 sort()를 사용하여 정렬하여 주기로 한다. sort안의 arrow function 같은 경우에는 a-b이면 오름차순, b-a 이면 내림차순이다. 

 

 

 


 

 

다른 사람들은 어떻게 풀었을까?

 

https://programmers.co.kr/learn/courses/30/lessons/12910/solution_groups?language=javascript 

 

프로그래머스

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

programmers.co.kr

 

 

 

 

728x90