728x90
메일을 받는 유저와, 정지를 당하는 유저를 검사해야 하는 문제입니다.
유저와 신고 받은 유저에 대한 딕셔너리를 먼저 만들고, 각 유저가 몇 개의 메일을 받는지 반환합니다.
중복 신고 케이스가 있어 셋을 통해 중복을 먼저 제거했습니다.
func solution(_ id_list:[String], _ report:[String], _ k:Int) -> [Int] {
var user: [String: [String]] = Dictionary(uniqueKeysWithValues: zip(id_list, Array(repeating: [], count: id_list.count)))
var reported: [String: Int] = Dictionary(uniqueKeysWithValues: zip(id_list, Array(repeating: 0, count: id_list.count)))
Set(report).map {
let split = $0.split(separator: " ")
let first = String(split.first!)
let last = String(split.last!)
reported[last]! += 1
user[first]!.append(last)
}
return id_list.map {
user[$0]!.reduce(0) { partialResult, reportedUser in
partialResult + (reported[reportedUser]! >= k ? 1 : 0)
}
}
}
728x90
'Algorithm' 카테고리의 다른 글
SwiftUI: [카카오 인턴] 키패드 누르기 (1) | 2023.12.18 |
---|---|
SwiftUI: 햄버거 만들기 (0) | 2023.12.17 |
SwiftUI: 신규 아이디 추천 (0) | 2023.12.17 |
SwiftUI: 둘만의 암호 (1) | 2023.12.17 |
SwiftUI: 카드 뭉치 (0) | 2023.12.17 |