프로그래머스 Level 1 코틀린 2022 KAKAO BLIND RECRUITMENT 신고 결과 받기
2023. 1. 24. 18:22ㆍ알고리즘/문제
https://school.programmers.co.kr/learn/courses/30/lessons/92334
1. 첫 번째 풀이
함수형을 통한 풀이 BUT 시간 초과로 다시 생각함
2. for문을 통한 풀이
class Solution {
fun solution(id_list: Array<String>, report: Array<String>, k: Int): IntArray {
val cntHashMap = LinkedHashMap<String, Int>()
val reportHashMap = LinkedHashMap<String, MutableList<String>>()
val answer = IntArray(id_list.size) { 0 }
var answerIndex = 0
id_list.forEach { id ->
cntHashMap[id] = 0
reportHashMap[id] = mutableListOf()
}
report.map {
it.split(" ")
}.toSet().map { it[1] }.forEach { id ->
cntHashMap[id] = cntHashMap[id]!! + 1
}
report.map { it.split(" ") }.toSet().forEach {
reportHashMap[it[0]]!!.add(it[1])
}
reportHashMap.forEach {
it.value.forEach { id ->
if (cntHashMap[id]!! >= k) {
answer[answerIndex] += 1
}
}
answerIndex++
}
return answer
}
}
함수형 + LinkedHashMap을 이용한 풀이로 성공
BUT! 함수형만으로 풀고 싶었음.
함수형 풀이( 다른 사람의 풀이를 참고함 이게 베스트인 것 같다. )
class Solution {
fun solution(id_list: Array<String>, report: Array<String>, k: Int): IntArray =
report
.map { it.split(" ") }
.groupBy { it[1] }
.asSequence()
.map { it.value.toHashSet() }
.filter { it.size>=k }
.flatten()
.map { it[0] }
.groupingBy { it }
.eachCount()
.run { id_list.map { getOrDefault(it,0) }.toIntArray() }
}
'알고리즘 > 문제' 카테고리의 다른 글
프로그래머스 알고리즘 Level 1 코틀린 2022 카카오 TECH INTENSHIP 성격 유형 검사하기 문제 (0) | 2023.01.25 |
---|---|
프로그래머스 알고리즘 Level 1 햄버거 만들기 (0) | 2023.01.24 |
프로그래머스 알고리즘 Level 1 코틀린 문자열 나누기 (2) | 2023.01.23 |
프로그래머스 알고리즘 Level 1 과일 장수 (0) | 2023.01.23 |
프로그래머스 알고리즘 Level 1 코틀린 기사단원의 무기 (0) | 2023.01.22 |