[Lv. 0] 최빈값 구하기프로그래머스/Level 02023. 4. 19. 16:42
Table of Contents
문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/120812
난이도 : Level.0
언어 : Kotlin
문제 설명 :
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
제한 사항 :
- 0 < array의 길이 < 100
- 0 ≤ array의 원소 < 1000
입출력 예 :
array | result |
[1, 2, 3, 3, 3, 4] | 3 |
[1, 1, 2, 2] | -1 |
[1] | 1 |
다른 사람의 풀이 :
class Solution {
fun solution(array: IntArray): Int {
val list = array.groupBy { it }.entries.sortedByDescending { (_, value) -> value.size }
return if (list.size > 1 && list[0].value.size == list[1].value.size) - 1 else list[0].key
}
}
꽤 붙잡고 고민하다가 실마리가 보이지 않아 다른 사람의 풀이를 참고하였다.
내가 시도하다 포기한 풀이는 다음과 같다.
fun main(args: Array<String>) {
println(solution(intArrayOf(1, 2, 3, 3, 3, 4)))
}
fun solution(array: IntArray): Int {
var answer: Int = 0
for (i in array.indices) {
try {
answer = if (array.groupBy { it }.filter { it.value.size > 1 }[i]!!.isNotEmpty()) {
println(array.groupBy { it }.filter { it.value.size > array.groupBy { it }.filter { it.value.size > 1 }[1]!!.size }.isNotEmpty())
if (array.groupBy { it }.filter { it.value.size > array.groupBy { it }.filter { it.value.size > 1 }[i]!!.size }.isNotEmpty()) {
println("a")
println(array.groupBy { it }.filter { it.value.size > array.groupBy { it }.filter { it.value.size > 1 }[i]!!.size }.values.flatten().distinct().joinToString("").toInt())
array.groupBy { it }.filter { it.value.size > array.groupBy { it }.filter { it.value.size > 1 }[i]!!.size }.values.flatten().distinct().joinToString("").toInt()
} else {
-1
}
} else {
array.first()
}
} catch (_: Exception) { }
}
return answer
}
'프로그래머스 > Level 0' 카테고리의 다른 글
[Lv. 0] 나머지 구하기 (0) | 2023.04.20 |
---|---|
[Lv. 0] 중앙값 구하기 (0) | 2023.04.20 |
[Lv. 0] 짝수는 싫어요 (0) | 2023.04.19 |
[Lv. 0] 피자 나눠 먹기 (3) (0) | 2023.04.18 |
[Lv. 0] 피자 나눠 먹기 (2) (0) | 2023.04.18 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!