일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- depends
- Django
- 재귀함수가 뭔가요
- 프로그래머스
- DB
- 갓재석
- METACLASS
- TypeError: 'property' object is not iterable
- AWS
- github skyline
- springboot 3.0.0
- 우아한 테크코스 2차 합격
- javascript
- 우아한테크코스 2차
- EC2
- classproperty
- github
- OperationalError
- 코딩테스트
- depends_on
- MySQL server on 'db' (115)
- python
- Spring
- docker-compose
- S3
- docker
- python all testcode
- classmethod
- AWS S3
- 2차 코딩테스트
Archives
hanbin.dev
[코딩테스트] 프로그래머스 베스트앨범 with javascript 본문
문제 풀이 코드
function solution(genres, plays) {
var answer = [];
var genreDict = {};
for (var i = 0; i < genres.length; i++){
if (!(genres[i] in genreDict)){
genreDict[genres[i]] = [];
}
genreDict[genres[i]].push([i, plays[i]]); // #1
}
var genreOrder = Object.keys(genreDict).sort(function(a,b){ // #2
var aSum = genreDict[a].map( x => x[1]).reduce(function(sum,currValue){
return sum + currValue;
}, 0);
var bSum = genreDict[b].map( x => x[1]).reduce(function(sum,currValue){
return sum + currValue;
}, 0);
return bSum - aSum;
});
for (var genre of genreOrder){ // #3
genreDict[genre].sort(function(a,b){
return b[1]- a[1];
});
}
for (var genre of genreOrder){ // #4
try{
answer.push(genreDict[genre][0][0]);
answer.push(genreDict[genre][1][0]);
}catch(error){
continue;
}
}
return answer;
}
#1
{"장르" : [[인덱스, 재생 횟수]]}
데이터 구조를 가지도록 전처리 했다.
#2
장르 순서를 가진 genreOrder 배열을 만들었다..
#3
같은 장르 간의 정렬을 했다.
#4
각 장르별 가장 재생 수가 많은 두 노래의 인덱스를 answer에 추가했다.
empty array 오류가 났기 때문에 try catch 문으로 처리했다.
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 프로그래머스 프린터 with Python (0) | 2021.05.10 |
---|---|
[코딩테스트] 프로그래머스 다리를 지나는 트럭 with Python (0) | 2021.05.09 |
[코딩테스트] 프로그래머스 기능개발 with javascript (0) | 2021.05.07 |
[코딩테스트] 프로그래머스 체육복 with javascript (0) | 2021.05.06 |
[코딩테스트] 프로그래머스 위장 with javascript (0) | 2021.05.06 |