Algorithm/programmers

프로그래머스 - 가장 많이 받은 선물

ytw_developer 2024. 9. 5. 00:48

 

import Foundation

func solution(_ friends:[String], _ gifts:[String]) -> Int {
    
    var friendInfo: [String:Int] = [:]
    
    for (index, name) in friends.enumerated() {
        friendInfo[name] = index
    }
    
    var giftState: [[Int]] = .init(repeating: .init(repeating: 0, count: friends.count), count: friends.count)
    var giftCount: [Int] = .init(repeating: 0, count: friends.count)
    for gift in gifts {
        var senderAndReceiver = gift.split(separator: " ").map { String($0) }
        var sender = senderAndReceiver[0]
        var receiver = senderAndReceiver[1]
        
        giftState[friendInfo[sender]!][friendInfo[receiver]!] += 1
        giftCount[friendInfo[sender]!] += 1
        giftCount[friendInfo[receiver]!] -= 1
    }
    
    var maximum = 0
    
    for sender in 0..<friendInfo.count {
        var tmp = 0
        for receiver in 0..<friendInfo.count {
            if giftState[sender][receiver] > giftState[receiver][sender] || (giftState[sender][receiver] == giftState[receiver][sender] && giftCount[sender] > giftCount[receiver]) {
                tmp += 1
            }
        }
        maximum = max(maximum, tmp)
    }
    
    return maximum
}