티스토리 뷰
문제설명
위의 문제를 보고 아래와 같은 형태로 만들어 풀수 있겠다 생각했고 접근했다.
["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 |
---|