나누어 떨어지는 숫자 배열

jericho·2023년 12월 9일

PS(문제풀이)

목록 보기
1/12

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

(html의 접기 문법이라고 하는데 벨로그에서는 안된다고 한다. 그냥 써봤음)

문제 설명 [접기/펼치기]
문제 설명

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]

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

입출력 예#2
arr의 모든 원소는 1으로 나누어 떨어집니다. 원소를 오름차순으로 정렬해 [1, 2, 3, 36]을 리턴합니다.

입출력 예#3
3, 2, 6은 10으로 나누어 떨어지지 않습니다. 나누어 떨어지는 원소가 없으므로 [-1]을 리턴합니다.

나누어 떨어지는 값만 남기고 정렬하여 반환한다. 단, 비어있으면 -1 채운다.

 - 풀이 1
fun solution(arr: IntArray, divisor: Int): IntArray {
   val answer = mutableListOf<Int>()
   for (i in arr) if (i % divisor == 0) answer.add(i)
   if (answer.isEmpty()) return intArrayOf(-1)
   return answer.sorted().toIntArray() }

뮤터블 리스트를 만들어 나눠떨어지는 수를 넣고 정렬시켜 배열로 변환했다.

 - 풀이 2
fun solution(arr: IntArray, divisor: Int): IntArray {
    val ans = arr.filter { it % divisor == 0 }
    if (ans.isEmpty()) return intArrayOf(-1)
    return ans.sorted().toIntArray() }

filter를 적용했다.

 - 풀이 3
fun solution(arr: IntArray, divisor: Int): IntArray =
    arr.filter { it % divisor == 0 }.run {
        if (isEmpty()) intArrayOf(-1) else sortedArray().toIntArray() }

run을 적용했다.

0개의 댓글