나누어 떨어지는 숫자 배열

2023. 4. 11. 11:22스터디/ALGORITHM

나누어 떨어지는 숫자 배열

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

문제 설명

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]
[3, 2, 6] 10 [-1]

arr의 원소 중 5로 나누어 떨어지는 원소는 5와 10입니다. 따라서 [5, 10]을 리턴합니다.

 

문제 풀이

function solution(arr, divisor) {
    let returnMap=[]
    let mapped = arr.map((x)=>(x%divisor===0?{x,isDivisible : true}:{x,isDivisible : false}))
    mapped.sort((a,b)=>(a.x-b.x)).map(function(a){
        if(a.isDivisible){
            returnMap.push(a.x)
        }
    })
    return returnMap.length === 0?[-1]:returnMap
}

 

 

코드 리뷰

  1. sort()메서드 콜백함수 조건을 이용해서 간단히 정렬
  2. filter() 메서드 사용
function solution(arr, divisor) {
    const mapped = arr.filter(x => x % divisor === 0).sort((a, b) => a - b);
    return mapped.length > 0 ? mapped : [-1];
}

 

'스터디 > ALGORITHM' 카테고리의 다른 글

수박수박수박수박수박수?  (0) 2023.04.11
문자열 다루기 기본  (0) 2023.04.11
2016년  (0) 2023.04.11
x만큼 간격이 있는 n개의 숫자  (0) 2023.04.11
최소직사각형  (0) 2023.04.10