https://school.programmers.co.kr/learn/courses/30/lessons/42579
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- dic - 장르 : 총합재생수
- dic2 - 장르 : [고유번호(인덱스)]
- dic3 - 인덱스 : 재생수
1. dic의 value값을 비교하여 속한 노래가 많이 재생된 장르를 정렬한 배열을 생성 (sortOne)
2. sortOne의 값은 많이 재생된 장르의 순이므로 차례로 장르내에서 많이 재생된 노래를 판단해야함
- d - 고유번호(인덱스) : 한 노래의 재생수
- d의 value 값(재생 수)을 이용해 비교함
- sorted메서드를 이용하여 value값이 높은 순서대로 정렬 시키도록 하였음
- Array<(key:value)>자료형이 반환되어 map메서드를 이용하여 key값으로 매핑
for i in sortOne{
let a = dic2[i.key]!
var d: [Int:Int] = [:]
for j in a{
d[j] = dic3[j]
}
var arr = d.sorted{
if $0.1 == $1.1{
return $0.0 < $1.0
}
return $0.1 > $1.1
}.map{$0.key}
}
3. 만약 장르내에서 재생횟수가 같은 노래중에서 고유 번호가 낮은 노래를 먼저 수록하기 위해 값이 같다면 고유번호가 낮은 곡이 앞에 배치 되도록 함
if $0.1 == $1.1{
return $0.0 < $1.0
}
4. 각 장르에서 최대 2개의 노래를 앨범에 추가함
if arr.count <= 2{
result += arr
}
else{
result.append(arr[0])
result.append(arr[1])
}
내 풀이)
import Foundation
func solution(_ genres:[String], _ plays:[Int]) -> [Int] {
var dic: [String : Int] = [:] // 장르:총합횟수
var dic2: [String:[Int]] = [:] // 장르:[인덱스]
var dic3: [Int:Int] = [:] // 인덱스,듣는횟수
for i in 0..<genres.count{
let genre = genres[i]
if dic[genre] == nil{
dic[genre] = plays[i]
}
else{
dic[genre] = dic[genre]! + plays[i]
}
if dic2[genre] == nil{
dic2[genre] = [i]
}
else{
dic2[genre]?.append(i)
}
dic3[i] = plays[i]
}
let sortOne = dic.sorted{$0.1 > $1.1} //1번 규칙 - 많이 실행된 장르
var result = [Int]()
for i in sortOne{
let a = dic2[i.key]!
var d: [Int:Int] = [:] // 인덱스 : 듣는횟수
for j in a{
d[j] = dic3[j] //
}
var arr = d.sorted{
if $0.1 == $1.1{ //3번 규칙 - 재생 횟수 같은 경우 고유 번호 낮은 노래 먼저 수록
return $0.0 < $1.0
}
return $0.1 > $1.1 //2번 규칙 - 장르 내에서 많이 재생된 노래 수록
}.map{$0.key}
if arr.count <= 2{
result += arr
}
else{
result.append(arr[0])
result.append(arr[1])
}
}
return result
}
'Swift랑 친해지기 > programmers 풀기' 카테고리의 다른 글
[프로그래머스] 숫자 변환하기 (Swift) (0) | 2023.12.12 |
---|---|
[프로그래머스] 다리를 지나는 트럭 (Swift) (0) | 2023.11.15 |
[프로그래머스] 소수 만들기 (Swift) (0) | 2023.11.02 |
[프로그래머스] 기사단원의 무기 (Swift) (1) | 2023.10.31 |
[프로그래머스] 대충 만든 자판 (Swift) (0) | 2023.10.30 |