프로그래머스 나누어 떨어지는 숫자 배열 알고리즘 문제.
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
'Algorithm' 카테고리의 다른 글
[알고리즘] #8 평균 구하기 | 프로그래머스 (0) | 2022.01.20 |
---|---|
[알고리즘] #12 부족한 금액 계산하기 | 프로그래머스 (0) | 2022.01.20 |
[알고리즘] #25 정수 제곱근 판별 | 프로그래머스 (0) | 2022.01.20 |
[알고리즘] #26 제일 작은 수 제거하기 | 프로그래머스 (0) | 2022.01.20 |
[알고리즘] #28 하샤드 수 | 프로그래머스 (0) | 2022.01.20 |