Home 프로그래머스 - 92334 신고 결과 받기 풀이
Post
Cancel

프로그래머스 - 92334 신고 결과 받기 풀이

문제

92334 신고 결과 받기

screencapture

풀이

리포트의 중복을 제거하고 Array 타입을 Array<Pair<String, String>> 형태로 바꾼다.

kotlin code

1
val reportPairArray = report.toSet().map { it.split(' ').let { l -> Pair(l[0], l[1] )} }.toTypedArray()

k번 이상 신고가 되어 사용 중지된 유저들을 구한다

kotlin code

1
val stopUsers = reportPairArray.groupingBy { it.second }.eachCount().filter { it.value >= k }.keys

리포트를 신고자 이름을 key로 하는 맵으로 변경한다.

kotlin code

1
val reportMap = reportPairArray.groupBy { it.first }.toMap()

각 유저별로 처리 결과 메일을 받은 횟수를 배열에 담아 return 한다.

kotlin code

1
2
3
return IntArray(id_list.size) {
    reportMap[id_list[it]]?.count { c -> c.second in stopUsers } ?: 0
}

kotlin code

1
2
3
4
5
6
7
8
9
10
11
class Solution {
    fun solution(id_list: Array<String>, report: Array<String>, k: Int): IntArray {
        val reportPairArray = report.toSet().map { it.split(' ').let { l -> Pair(l[0], l[1] )} }.toTypedArray()
        val stopUsers = reportPairArray.groupingBy { it.second }.eachCount().filter { it.value >= k }.keys
        val reportMap = reportPairArray.groupBy { it.first }.toMap()

        return IntArray(id_list.size) {
            reportMap[id_list[it]]?.count { c -> c.second in stopUsers } ?: 0
        }
    }
}
This post is licensed under CC BY 4.0 by the author.

백준 - 2042 구간 합 구하기 풀이

프로그래머스 - 77484 로또의 최고 순위와 최저 순위 풀이