정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
최종 답안 코드
class Solution {
fun solution(arr: IntArray): IntArray {
var answer = intArrayOf()
var minNum = arr.minOrNull()
var numArr = arr.filter{it != minNum}.toIntArray()
if(numArr.isEmpty()){
return intArrayOf(-1)
}else{
return numArr
}
}
}
풀이 과정
class Solution {
fun solution(arr: IntArray): IntArray {
var answer = intArrayOf()
var minNum = arr.minOrNull()
var numArr = arr.filter{it != minNum}.sorted().reversed().toIntArray()
println(numArr.contentToString())
return answer
}
}
일단은 이런식으로 하려고했는데,
arr 의 최소값을 구하고, numArr에 그 값을 제외하고 정렬을 시켜준다음 다시 IntArray로 변환함
이제 여기서 만약에 최소값 삭제하고 빈 배열이면 -1을 리턴하게 만들어줘야함
class Solution {
fun solution(arr: IntArray): IntArray {
var answer = intArrayOf()
var minNum = arr.minOrNull()
var numArr = arr.filter{it != minNum}.sorted().reversed().toIntArray()
if(numArr.isEmpty()){
return intArrayOf(-1)
}else{
return numArr
}
}
}
이렇게 만들었는데 테스트는 통과하는데 채점돌리면 다 틀림
class Solution {
fun solution(arr: IntArray): IntArray {
var answer = intArrayOf()
var minNum = arr.minOrNull()
var numArr = arr.filter{it != minNum}.toIntArray()
if(numArr.isEmpty()){
return intArrayOf(-1)
}else{
return numArr
}
}
}
왜 틀렸지하고 문제 다시 봤는데 내가 정렬을 해서 그렇다.
테스트 케이스에서는 운 좋게 정렬 되어있는 배열이 테스트케이스로 설정 되어있어서 맞게 나온거였다. 정렬 삭제해주니까 통과함
class Solution {
fun solution(arr: IntArray): IntArray {
if(arr.size == 1)
return intArrayOf(-1)
val answer = arr.toMutableList()
answer.remove(answer.min()!!)
return answer.toIntArray()
}
}
arr size 가 1면 어차피 삭제하고나면 빈 배열 되니까 처음에 size가 1인 배열이면 -1반환하게하고,
최소값을 삭제해준듯.
class Solution {
fun solution(arr: IntArray): IntArray {
val result = arr.toCollection(ArrayList())
result.removeAt(arr.indexOf(arr.min()!!))
if (result.isEmpty()) {
result.add(-1)
}
return result.toIntArray()
}
}
알게 된 것
쓸모없이 개오래걸렸네 정렬을 안해야되는데 정렬을 해버려가지고는