알고리즘
카카오 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
}
}