https://programmers.co.kr/learn/courses/30/lessons/72411?language=javascript#
โถ ์ฝ๋ :
function solution(orders, course)
{
let answer = [];
let data = new Map();
for (const order of orders)
{
let orderToArr = [...order];
orderToArr = orderToArr.sort();
for (let i = order.length; i>0; i--)
{
let combinations = combination(orderToArr, i);
for (let c of combinations)
{
c = c.join('');
data.set(c, data.get(c) + 1 || 1);
}
}
}
data = [...data].sort((a,b) => b[1] - a[1]);
for (const num of course)
{
maxNum = 2
for (const e of data)
{
if (e[0].length === num)
{
if (e[1] >= maxNum){
answer.push(e[0]);
maxNum = e[1]
}
}
}
}
answer = answer.sort();
return answer;
}
const combination = function (arr, selectNumber) {
const results = [];
if (selectNumber === 1) return arr.map((value) => [value]);
arr.forEach((fixed, index, origin) => {
const rest = origin.slice(index + 1);
const temp = combination(rest, selectNumber - 1);
const attached = temp.map((e) => [fixed, ...e]);
results.push(...attached);
});
return results;
}
โถ ๋ฌธ์ ํ์ด :
1. ์ ๋ฌธ์ ๋ ์กฐํฉ(Combination)์ ์ด์ฉํด ํด๊ฒฐํ ์ ์์๋ค.
2. ๊ธฐ์กด ์ฌ์ฉํ๋ Python์ ๊ฒฝ์ฐ itertools์ ๋ด์ฅ๋ combination ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋์์ง๋ง JS์ ๊ฒฝ์ฐ์๋ ์ง์ ๊ตฌํํด์ ์ฌ์ฉํด์ผ ํ๋ค. ์ธํฐ๋ท์ ๋์์ ๋ฐ์ ์์ด๊ณผ ์กฐํฉ ๊ด๋ จํ์ฌ ํจ์๋ฅผ ์ง๋์ผ์ ๋ถ์ด ๊ณ์ ์ ๋ด์ฉ์ ์ ์ฝ๊ณ ์ ์ฉํ์๋ค.
3. ๊ทธ ์ธ์ ์ฝ๋๋ ๋ฌธ์ ์์ ์๊ตฌํ๋๋ก ๊ตฌํํ๋ ๊ณผ์ ์ด์๊ธฐ์ ํฌ๊ฒ ์ด๋ ต์ง ์์๋ค.
'๐ฏ CodingTest > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] ๋ฉ์ฉกํ ์ฌ๊ฐํ (0) | 2022.06.11 |
---|---|
[Programmers] (Javascript) ์์ ๊ฒ์ (2) | 2022.05.02 |
[Programmers] (Javascript) ์ถ์ ํธ๋ํฝ (0) | 2022.04.26 |
[Programmers] (Javascript) ํํ (0) | 2022.04.25 |
[Programmers] (Javascript) ์์ ์ต๋ํ (0) | 2022.04.25 |