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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
//속한 노래가 많이 재생된 장르를 먼저 수록한다.
//장르 내에서 많이 재생된 노래를 먼저 수록한다.
//장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다.
//문자열 배열 genrse 노래별 재생횟수를 나타내는 정수 배열이 주어진다.
// 노래의 고유 번호를 고유 번호를 순서대로 retrn 하도록 solution 함수 완성,
//제한사항 1. genres[i]는 고유번호가 i인 노래의 장르
// 2. plays[i]는 고유번호가 i인 노래가 재생된 횟수입니다.
// genres와 plays의 길이는 같다. 길이는 1 이상 10000이하입니다.
// 장르 종류는 100개 미만입니다.
//장르에 속한 곡이 하나라면 하나의 곡만 선택합니다.
//두 개씩 출시.. 장르별..
/*
우선 순위
1. 속한 노래가 많은 장르 부터
2. 장르 내에서 많이 재성된 노래
3. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록한다.
*/
function solution(genres, plays) {
var answer = [];
// 장르별 곡 개수 만드든 객체 만들기
let objectTotal =[];
for(let i=0;i<genres.length;i++){
let index = objectTotal.findIndex(e=>e.name===genres[i]);
if(index < 0){ //값이 없을때..
name : genres[i],
val : plays[i]
})
}
else{
objectTotal[index].val+= plays[i]; //기존값에서 합치기
}
}
//장르별 많이 재생된 노래별로 정리
//재생횟수가 같은 노래일경우 고유 번호가 낮은 노래를 먼저 수록한다.
let objectSort = {};
for(let i=0;i<plays.length;i++){
if(!objectSort[genres[i]]){
objectSort[genres[i]] = [];
}
objectSort[genres[i]].push(plays[i]+" "+i); //횟수랑 인덱스 값으로 같이저장..
}
//sort하는 부분... 장르별로
for(let key in objectSort){
objectSort[key].sort(function(a,b){
if(Number(a.substring(a,a.indexOf(" "))) === Number(b.substring(b,b.indexOf(" ")))){
return Number(a.substring(a.indexOf(" "))) - Number(b.substring(b.indexOf(" ")));
}
else{
return - ( Number(a.substring(a,a.indexOf(" "))) - Number(b.substring(b,b.indexOf(" ")))) ;
}
})
}
objectTotal.sort(function(a,b){
return b.val - a.val //올림차순..
})
for(let i=0;i<objectTotal.length;i++){
for(let j=0;j<2;j++){
let result = objectSort[objectTotal[i].name][j];
if(!result){
continue; //이부분이 필요한 이유가 있다... 한개일때는 그냥 넘겨야한다..
}
result = result.substring(result.indexOf(" "));
result = Number(result);
}
}
return answer;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
'알고리즘구현능력 > 문제해결능력' 카테고리의 다른 글
[javascript] 프로그래머스/문자열 압축 문제.. (0) | 2019.11.22 |
---|---|
[javascript] 프로그래머스/모의고사 (0) | 2019.11.21 |
[java] 백준/2875 대회or인턴 (0) | 2019.06.08 |
[java] 백준/2271 로프 (0) | 2019.06.07 |
[java] 백준/5585 거스름돈 (0) | 2019.06.06 |