본문 바로가기
Algorithm

SwiftUI: 신고 결과 받기

by songmoro 2023. 12. 17.
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