알고리즘

카카오 2024 WINTER INTERNSHIP

dodop 2025. 5. 28. 23:19

 

 

Lv.1 가장 많이 받은 선물 

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/258712?language=kotlin

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

구현에 가까운 문제다. 

 

class Solution {
    fun solution(friends: Array<String>, gifts: Array<String>): Int {
        var answer: Int = 0
        val n = friends.size
        var nameToIndex = friends.withIndex().associate { it.value to it.index}
        var graph = Array<IntArray>(n) {IntArray(n)}
        var giftScore = IntArray(n)
        var giftsToGetScore = IntArray(n)
        gifts.forEach{
            val (giver, taker) = it.split(" ")
            val giverIndex = nameToIndex[giver]!!
            val takerIndex = nameToIndex[taker]!!
            graph[giverIndex][takerIndex] += 1
            giftScore[giverIndex] ++
            giftScore[takerIndex] -- 
        }
        for(i in 0 until n) {
            for(j in 0 until n){ 
                if(i == j ) continue
                when {
                    graph[i][j] > graph[j][i] -> giftsToGetScore[i] ++ 
                    graph[i][j] == graph[j][i] && giftScore[i] > giftScore[j] -> giftsToGetScore[i] ++ 
                }
            }
            
        }
        
        return giftsToGetScore.maxOrNull() ?: 0
    }
}