[Level 1] 프로그래머스 나누어 떨어지는 숫자 배열 코틀린 풀이

[Level 1] 프로그래머스 나누어 떨어지는 숫자 배열 코틀린 풀이

프로그래머스 나누어 떨어지는 숫자 배열 코틀린 풀이!


문제 소개

이번 문제는 수를 다루는 연습문제입니다.

problem

이번 문제는 배열과 나눌 수를 주고 나누어지는 수만 필터링하는 문제입니다!
특이한 점은

  • 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
    라는 조건에서 알 수 있듯이 중복이 없고

아무것도 나누어 떨어지지 않는다면 배열에 -1을 담아 반환해야한다는 점입니다.


문제풀이

나머지가 0이면 나누어 떨어지겠죠?

먼저 받아온 array를 나누어 떨어지는지로 필터링한 후 정렬해줍니다.

1
arr.filter { it % divisor == 0 }.sorted()

근데 우리는 나누어 떨어지지 않을 때 -1을 넣어야하니 수정 가능한 리스트로 바꿔줍시다.

Kotlin의 List는 기본적으로 변경 불가능(Immutable)합니다.
1
2
3
4
arr.filter { it % divisor == 0 }.sorted().toMutableList().run {
if (size == 0) add(-1)
toIntArray()
}

size가 0일때 -1을 추가해주고 정답형태인 IntArray로 변형해줍니다.


정답 코드

1
2
3
4
5
6
7
class Solution {
fun solution(arr: IntArray, divisor: Int): IntArray =
arr.filter { it % divisor == 0 }.sorted().toMutableList().run {
if (size == 0) add(-1)
toIntArray()
}
}

뭔가 숏코딩처럼 풀렸네요! 쉬운문제니 빨리 풀고 넘어갑시다!!

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

댓글