-
해쉬_Programmgers_베스트앨범 [swift]알고리즘/알고리즘 문제풀이 2024. 8. 22. 21:31
https://school.programmers.co.kr/learn/courses/30/lessons/42579?language=swift
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
요구사항
- 장르의 재생 수 순위
- 장르 내 노래의 재생 수 순위
- 장르 순위 순서로 장르 내 노래 순위 순서로 2개를 뽑음.
- 노래의 plays가 같다면 id로 정렬
노래가 2개니까 비교가 쉽다..
코드 중 appendee의 sorted 구문은 plays비교조건만 있을 때에도 채점 시 전부 정답이 되었다.
생각해보면, id 순서대로 dic 내 Array에 추가되고, 정렬 시, 큰 element가 앞쪽으로 이동하므로, id가 작은 element가 앞쪽에 있기 때문이다.
추가해서 사용한 테스트 케이스
genres(string[]) : ["q", "q", "q", "p", "p", "p"]
plays(int[]) : [100, 200, 300, 100, 100, 150]
Return : [2, 1, 5, 3]
import Foundation func solution(_ genres:[String], _ plays:[Int]) -> [Int] { var musics = [String: [Music]]() var genrePlayCount = [String: Int]() var sol = [Int]() for (index, genre) in genres.enumerated() { if musics[genre] == nil { musics[genre] = [Music(id: index, plays: plays[index])] } else { musics[genre]?.append(Music(id: index, plays: plays[index])) } if genrePlayCount[genre] == nil { genrePlayCount[genre] = plays[index] } else { genrePlayCount[genre] = plays[index] + genrePlayCount[genre]! } } let sorted = genrePlayCount.sorted { $0.value > $1.value } for (key, value) in sorted { let appendee = musics[key]!.sorted { $0.plays > $1.plays }.prefix(2).map { $0.id } sol.append(contentsOf: appendee) } return sol } struct Music { let id: Int let plays: Int }
더보기채점을 시작합니다.정확성 테스트테스트 1 〉 통과 (0.22ms, 16.5MB) 테스트 2 〉 통과 (0.22ms, 16.2MB) 테스트 3 〉 통과 (0.20ms, 16.4MB) 테스트 4 〉 통과 (0.21ms, 16.4MB) 테스트 5 〉 통과 (0.38ms, 16.4MB) 테스트 6 〉 통과 (0.34ms, 16.5MB) 테스트 7 〉 통과 (0.28ms, 16.5MB) 테스트 8 〉 통과 (0.24ms, 16.5MB) 테스트 9 〉 통과 (0.22ms, 16.4MB) 테스트 10 〉 통과 (0.38ms, 16.3MB) 테스트 11 〉 통과 (0.23ms, 16.5MB) 테스트 12 〉 통과 (0.29ms, 16.3MB) 테스트 13 〉 통과 (0.36ms, 16.4MB) 테스트 14 〉 통과 (0.37ms, 16.5MB) 테스트 15 〉 통과 (0.21ms, 16.1MB) 채점 결과정확성: 100.0합계: 100.0 / 100.0'알고리즘 > 알고리즘 문제풀이' 카테고리의 다른 글
DFS/BFS_Programmgers_타겟 넘버 [swift] (0) 2025.02.06 스택/큐_Programmgers_기능개발 [swift] (0) 2024.08.22 문자열?_programmers_ 신고 결과 받기 [swift] (0) 2022.06.24 문자열_codility_binaryGap [swift] (0) 2022.06.19 dijkstra(최단거리)_LeetCode_1514 [swift] (0) 2022.05.25