👇🏻문제 확인하기
프로그래머스 - 신고 결과 받기
2022년 카카오 블라인드 채용문제이고, 프로그래머스에서 레벨1로 분류한 문제이다. 카카오문제인 만큼 문제가 우선 엄청 길고 조건이 까다롭다!
구해야 할 값들을 정확하게 인지하고 입력받은 값들을 자유롭게 사용해야 하는 것이 key potin라고 생각한다.
fun solution(id_list: Array<String>, report: Array<String>, k: Int): IntArray {
val temp = id_list.associateWith { 0 }.toMutableMap()
report.groupBy { it.split(" ")[1]} // 신고당한 사람 기준으로 map 만들기
.values
.map { it.distinct() } // value의 중복 제거
.filter { it.size>= k } // k보다 신고 많이 당한 사람 뽑아내기
.map{ it.map { reporter -> reporter.split(" ")[0]} } // 신고한 사람 값 가져오기
.flatten() // 다차원배열을 일차원배열로 변경
.forEach { reporter ->
temp[reporter] = temp[reporter]!! + 1 // 신고한 사람의 숫자 1 증가시키기
}
return temp.values.toIntArray()
}
kotlin의 편리함을 느낀 문제!!!!
Koans로 컬렉션 정리해준게 유용하게 사용된다!!
아는만큼 보이는 kotlin...