2021 KAKAO BLIND RECRUITMENT-메뉴리뉴얼
06.08에 푼 문제입니다🌷
메뉴리뉴얼
순열을 이용한 문제이다.
function solution(orders, course) {
var answer = [];
let menulist=[]
let maplist=new Map()
//순열로 가능한 메뉴를 뽑아본다.
orders.map(order=>{
order=[...order].sort()
course.map(c=> menulist.push(...getCombination(order,c)))
})
//세트메뉴가 몇명의 손님이 주문했는지 계산한다.
menulist.map(menu=>{
menu=menu.join('')
if(!maplist.get(menu))
maplist.set(menu,0)
maplist.set(menu,maplist.get(menu)+1)
})
// 한명 이상이 주문한 메뉴를 고른다.
for(let [key,value] of maplist){
if(value<2) maplist.delete(key)
}
menulist=[...maplist]
//c개의 코스 메뉴중 가장 많이 주문한 코스를 선택한다.
course.map(c=>{
const menus=menulist.filter(menu=>c===menu[0].length)
menus.sort((a,b)=>b[1]-a[1])
const max=menus[0]
const setmenus=menus.filter(m=>m[1]===max[1])
setmenus.map(menu=>answer.push(menu[0]))
})
answer.sort()
return answer;
}
function getCombination(orders,num){
const results=[]
if(num===1) return orders.map(order=>[order])
orders.forEach((fixed,index,origin)=>{
const rest=origin.slice(index+1)
const combination=getCombination(rest,num-1)
const attach = combination.map(com=>[fixed,...com])
results.push(...attach)
})
return results
}
Author And Source
이 문제에 관하여(2021 KAKAO BLIND RECRUITMENT-메뉴리뉴얼), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mlsh1112/2021-KAKAO-BLIND-RECRUITMENT-메뉴리뉴얼저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)