[프로그래머스] 제일 작은 수 제거하기(Kotlin)

0

프로그래머스

목록 보기
75/128
post-thumbnail
post-custom-banner

[프로그래머스] 제일 작은 수 제거하기(Kotlin)

풀이1

class Solution {
    fun solution(arr: IntArray): IntArray {
        if(arr.size == 1) return intArrayOf(-1) //IntArray값으로 초기화
        
        var minDigit = arr[0] //가장 작은 수
        var minDigitIndex = 0; //가장 작은 수의 인덱스
        for(i in 1 until arr.size){
            if(arr[i] < minDigit){
                minDigit = arr[i]
                minDigitIndex = i
            }
        }
        
        val answer = IntArray(arr.size -1) //IntArray 공간 할당
        var answerIndex = 0
        
        //(1) arr[0] ~ arr[minDigitIndex-1] 까지 answer에 저장
        for(i in 0 until minDigitIndex){
            answer[answerIndex] = arr[i]
            answerIndex += 1
        }
        //(2) arr[minDigitIndex] 제외
        //(3) arr[minDigitIndex+1] ~ arr[arr.size-1]까지 answer에 저장
        for(i in (minDigitIndex+1) until arr.size){
            answer[answerIndex] = arr[i]
            answerIndex += 1
        }
        return answer
    }
}

풀이2

  • 다른 사람의 풀이
  • 이 코드를 보고 내 긴 코드가 부끄러워졌다!
    • Kotlin Collection의 최솟값을 구하는 내장함수가 있는 줄 모르고 for문으로 직접 구했다
    • filter 함수를 쓸 생각을 전혀 못했다!
  • 그동안 문제를 C++로 풀어왔기 때문에 Kotlin스러운 코드를 짜지 못하는 것 같다
    앞으로 문제를 풀면서 다른 사람의 풀이를 열심히 참고해봐야겠다
class Solution {
    fun solution(arr: IntArray): IntArray = if(arr.size == 1) arrayOf(-1).toIntArray() 
                                            else arr.filter { it != arr.min() }.toIntArray()
}
profile
Be able to be vulnerable, in search of truth
post-custom-banner

0개의 댓글