티스토리 뷰

문제설명

위의 문제를 보고 아래와 같은 형태로 만들어 풀수 있겠다 생각했고 접근했다.

["classic": [[0, 500], [2, 150], [3, 800]], "pop": [[1, 600], [4, 2500]]]

1번째 풀이

import Foundation

func solution(_ genres:[String], _ plays:[Int]) -> [Int] {
    var bestAlbum: [Int] = []
    var musicDictionary: [String: [[Int]]] = [:]

    for i in 0..<plays.count {
        let genre = genres[i]
        let play = plays[i]

        if !musicDictionary.keys.contains(genre) {
            musicDictionary.updateValue([[i, play]], forKey: genre)
        } else {
            musicDictionary[genre]?.append([i, play])
        }
    }

    let sortedDictionary = musicDictionary.sorted { first, second in
        first.value.map { $0[1] }.reduce(0, +) > second.value.map { $0[1] }.reduce(0, +)
    }

    for i in 0..<sortedDictionary.count {
        let music = sortedDictionary[i].value.sorted { $0[1] > $1[1] }
        bestAlbum.append(music[0][0])
        bestAlbum.append(music[1][0])
    }
    return bestAlbum
}

1번째 결과

PlayGround에서는 잘되는데 뭐가 문제일까... 검색해보니 논리오류 혹은 스택 초과 인것 같은데 다음에또 도전해봐야겠다.

'Algorithm > Programmers' 카테고리의 다른 글

고득점Kit 해시 위장 Level2  (0) 2022.08.10
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함