https://programmers.co.kr/learn/courses/30/parts/12077
function solution(participant, completion) {
var answer = '';
const hashMap=new Map();
// 해시에 player 추가, 동일 선수면 +1씩 더해진다.
participant.forEach(player=>{
if(!hashMap.get(player)){
hashMap.set(player,1)
}else{
hashMap.set(player,hashMap.get(player)+1)
}
})
// 완료한 선수만큼 해시의 value를 빼준다.
completion.forEach(player=>{
hashMap.set(player,hashMap.get(player)-1)
})
// 결국 value가 1 이상인 것은 완주하지 못한 선수밖에 없게 된다.
participant.forEach(player=>{
if(hashMap.get(player)>0){
answer=player
}
})
return answer;
}
def solution(phone_book):
answer = True
phone_book.sort()
for i in range(len(phone_book)-1):
if phone_book[i]==phone_book[i+1][0:len(phone_book[i])]:
answer = False
return False
return answer
function solution(clothes) {
const hash= new Map();
let count=1;
for(var i=0;i<clothes.length;i++){
hash.get(clothes[i][1]) ? hash.set(clothes[i][1],hash.get(clothes[i][1])+1) : hash.set(clothes[i][1],1)
}
let index=1
for (var[key,value] of hash){
index=index*(value+1)
}
const answer = index-1
return answer;
}
function solution(genres, plays) {
var answer = [];
var genresObj={}
var music=[]
// 장르 내부 plays수 구하기
genres.forEach((genre,i)=>{
genresObj[genre]=genresObj[genre] ? genresObj[genre]+plays[i] : plays[i]
})
var genArray = Object.entries(genresObj).sort((a,b)=>
b[1]-a[1]
)
// genres, plays를 담는 music 객체 생성
for(var i=0;i<genres.length;i++){
music.push({genre: genres[i],play: plays[i],index: i})
}
music.sort((a,b)=>b.play===a.play ? a.index-b.index : b.play-a.play)
for(var [key,value] of genArray){
var count=0
music.map(t=>t.genre===key && count++<2 && answer.push(t.index))
}
return answer;
}
다시 풀었을 때, 나온 풀이
function solution(genres, plays) {
const answer = []
const albums = []
const sumPlays = {} // 장르 내부 곡의 전체 재생 횟수
const genreSort = {} // 장르에서 상위 2번째 노래까지 선택하기 위해 만든 객체
// 장르 정보 객체에 저장
genres.forEach((genre,i)=>{
sumPlays.hasOwnProperty(genre) ? sumPlays[genre] = plays[i] + sumPlays[genre] : sumPlays[genre] = plays[i]
genreSort[genre] = 0
})
// 배열에 노래에 대한 정보를 객체로 추가
genres.forEach((genre,index)=>{
albums.push({
genre: genre,
plays: plays[index],
index: index,
sumPlays: sumPlays[genre]
})
})
// albums 정렬 1. 장르 재생 수 2. 각 노래 재생 수
albums.sort((a,b)=>b.sumPlays - a.sumPlays).sort((a,b)=>{
if (a.sumPlays === b.sumPlays) {
return b.plays - a.plays
}
})
// answer에 추가
albums.map(album=>{
genreSort[album.genre]++
if (genreSort[album.genre] <= 2) {
answer.push(album.index)
}
})
return answer;
}