[프로그래머스 LV3] 베스트앨범

Junyoung Park·2022년 8월 14일
0

코딩테스트

목록 보기
556/631
post-thumbnail

1. 문제 설명

베스트앨범

2. 문제 분석

딕셔너리를 통해 해시했고, reduce, map 등 고차 함수를 통해 정렬 시 필요한 정보를 캐치했다. 고차 함수를 연습해보는 파트.

3. 나의 풀이

import Foundation

func solution(_ genres:[String], _ plays:[Int]) -> [Int] {
    var genreDict = [String:[(Int, Int)]]()
    for idx in 0..<genres.count {
        let genre = genres[idx]
        let play = plays[idx]
        var genreValue = genreDict[genre] ?? []
        genreValue.append((play, idx))
        genreDict[genre] = genreValue
    }
    var values = Array(genreDict.values)
    values.sort(by: {$0.map{$0.0}.reduce(0, +) > $1.map{$0.0}.reduce(0, +)})
    var result = [Int]()
    for value in values {
        let value = value.sorted(by: {$0.0 > $1.0})
        let indices = value.map{$0.1}
        if indices.count < 2 {
            result += indices
        } else {
            result += indices[0..<2]
        }
    }
    return result
}
profile
JUST DO IT

0개의 댓글