Beginner
2024-04-05나누어 떨어지는 숫자 배열
divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수 구현하기
#99일지#99클럽#TIL#개발자스터디#코딩테스트#항해
직접 풀러가기문제 설명
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
제한 사항
- arr은 자연수를 담은 배열입니다.
- 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
- divisor는 자연수입니다.
- array는 길이 1 이상인 배열입니다.
| arr | divisor | return |
| [5, 9, 7, 10] | 5 | [5, 10] |
| [2, 36, 1, 3] | 1 | [1, 2, 3, 36] |
| [3,2,6] | 10 | [-1] |
풀이
-
arr의 각 원소에 대해
divisor로 나누어지는지 확인한다. - 해당하는 원소는 answer 배열에 추가한다.
-
만약 answer 배열의 길이가 0이라면 배열에
-1을 담고, 반환한다. - 반복문이 완료되면, 배열을 오름차순으로 정렬하고 반환한다.
function solution(arr, divisor) {
let answer = [];
arr.forEach((num) => {
if (num % divisor == 0) {
answer.push(num);
}
});
if (answer.length == 0) {
return [-1];
}
answer.sort(function (a, b) {
return a - b;
});
return answer;
}
Python
def solution(arr, divisor):
answer = []
for num in arr:
if num % divisor == 0:
answer.append(num)
if not answer:
return [-1]
answer.sort()
return answer
더 간소화한다면, 아래와 같이 구현할 수 있다.
def solution(arr, divisor):
answer = sorted([num for num in arr if num % divisor == 0])
return answer if answer else [-1]