[프로그래머스] 제일 작은 수 제거하기(Kotlin)
풀이1
class Solution {
fun solution(arr: IntArray): IntArray {
if(arr.size == 1) return intArrayOf(-1)
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)
var answerIndex = 0
for(i in 0 until minDigitIndex){
answer[answerIndex] = arr[i]
answerIndex += 1
}
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()
}