문제 설명 |
정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다. |
제한 조건 |
|
입출력 예 |
|
arr | return |
[4,3,2,1] | [4,3,2] |
[10] | [-1] |
나의 풀이
1. 정답을 리턴할 0만 들어있는 배열 answer 생성
2. 만약 입력받은 배열 arr의 크기가 1이면 바로 -1만 들어있는 배열 리턴
3. 크기가 1이 아니면 arr 원소 중에서 최솟값(arr.min())이 아닌 경우 answer에 삽입
4. 위 answer에서 맨 처음 삽입되었던 0을 제거한 후 리턴
class Solution {
fun solution(arr: IntArray): IntArray {
var answer = mutableListOf(0)
var count = 0
if (arr.size != 1) {
for (i in arr)
{
if (i != arr.min()) answer.add(i)
count++
}
answer.removeAt(0)
return answer.toIntArray()
}
else return intArrayOf(-1)
}
}
filter를 사용해서 구현해보려고 했는데, 도저히 filter 개념을 이해할 수가 없었다. 아무래도 코틀린 책 하나를 사서 개념을 자세히 공부해야할 것 같다. 그래서 그냥 자바 식으로 풀이....ㅎㅎ 그리고 코틀린 배열의 개념이 참 어렵다ㅠ 빈 동적배열 선언 어떻게 하는거지? |
Kotlin1 코드 정리
1. arr의 사이즈가 1이면 -1이 들어있는 IntArray 배열 리턴
2. 1이 아니면 arr.min()이 아닐 경우 삽입 후 리턴
class Solution {
fun solution(arr: IntArray): IntArray = if(arr.size == 1) arrayOf(-1).toIntArray()
else arr.filter { it != arr.min() }.toIntArray()
}
내가 이걸 계속 시도했다가 실패했던게 if문을 filter 안에 넣어서 그런거였구나... if문을 따로 빼서 리턴을 따로 해주고 else문을 타서 그 안에서 filter...!!!! |
'프로그래머스 > Kotlin | Level1' 카테고리의 다른 글
[프로그래머스/Kotlin]Level1 - 약수의 합 (0) | 2021.08.17 |
---|---|
[프로그래머스/Kotlin]Level1 - 자릿수 더하기 (0) | 2021.08.17 |
[프로그래머스/Kotlin]Level1 - 수박수박수박수박수박수? (0) | 2021.05.01 |
[프로그래머스/Kotlin]Level1 - 두 정수 사이의 합 (0) | 2021.04.29 |
[프로그래머스/Kotlin]Level1 - 문자열 다루기 기본 (0) | 2021.04.29 |