본문 바로가기
프로그래머스 Algorithm

[프로그래머스] 나누어 떨어지는 숫자 배열 Kotlin

by Echung 2023. 11. 19.

안녕하세요. 이번에는 프로그래머스 나누어 떨어지는 숫자 배열을 풀어보려고 합니다.

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


Problem

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.

divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.

 

[제한 사항]

arr은 자연수를 담은 배열입니다.

정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.

divisor는 자연수입니다.

array는 길이 1 이상인 배열입니다.

사진 1. 입출력 예

Solution

class Solution {
    fun solution(arr: IntArray, divisor: Int): IntArray {
        var answer = intArrayOf()

        for(i in 0..arr.size - 1) {
            if(arr[i] % divisor == 0) {
                answer += arr[i]
            }    
        }

        answer.sort()
        if(answer.size == 0) answer += -1

        return answer
    }
}

 이번 문제는 divisor로 나누어 떨어지는 값들을 answer에 저장시키고 sort를 사용해서 정렬 시키는 방식으로 문제를 접근하였다. 그리고 divisor로 떨어지는 값이 없는 경우 -1을 추가하기위해 answer의 사이즈를 판단하는 코드를 추가했다.

 

1. 다른 사람 코드

class Solution {
    fun solution(arr: IntArray, divisor: Int): IntArray {
        val answer = arr.sorted().filter {
            it % divisor == 0
        }
        
        return if (answer.isEmpty()) intArrayOf(-1) else answer.toIntArray()
    }
}

  다른 사람의 코드를 통해서 새로운 접근 방법을 공부해보았다. 처음부터 sorted()를 사용해서 배열을 오름차순으로 정리하고 filter기능을 통해서 divisor을 떨어지는 값으로 배열을 처리하는 방식으로 문제에 접근한 방법이였다. 그리고 마지막으로 answer가 비어있는지 값이 있는지를 판단한 후 만약 비어있으면 -1을 아니면 answer을 출력하도록 하는 코드였다. 


Performance

1. 내가 작성한 코드 2. 다른 사람 코드
반응형