๋ฌธ์
๋์ ์ผ๋ก ๊ฒ์์๊ฐ์ ๋๋ ค์ ๋์ด๋๋ฅผ ์กฐ์ ํ๋ค.
์คํจ์จ = ์คํ ์ด์ง์ ๋๋ฌํ์ผ๋ ์์ง ํด๋ฆฌ์ดํ์ง๋ชปํ ํ๋ ์ด์ด ์ / ์คํ ์ด์ง์ ๋๋ฌํ ํ๋ ์ด์ด ์
์ ์ฒด ์คํ ์ด์ง ๊ฐ์ N
๊ฒ์์ ์ด์ฉํ๋ ์ฌ์ฉ์๊ฐ ํ์ฌ ๋ฉ์ถฐ์๋ ์คํ ์ด์ง์ ๋ฒํธ๊ฐ ๋ด๊ธด ๋ฐฐ์ด stages
์คํจ์จ์ด ๋์ ์คํ ์ด์ง๋ถํฐ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์คํ ์ด์ง ๋ฒํธ๊ฐ ๋ด๊ฒจ์๋ ๋ฐฐ์ด์ return
๋ฐฉ๋ฒ
์คํจ์จ์ ๊ตฌํด์ ๋ฐฐ์ด์์ ๋ฃ๊ณ , ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํด์ return ํ์
์ฝ๋
const solution = (N, stages) => {
let answer = [];
// ์ธ์์
let totalNum = stages.length;
for (let i = 1; i <= N; i++) {
// ํ์ฌ ์คํ
์ด์ง์ ๋๋ฌํ ์ธ์ ์ฐพ๊ธฐ
let stageNum = stages.filter(ele => ele === i).length;
// ์คํจ์จ ๊ธฐ๋ณธ ์ธํ
let failRatio = 0;
// ์คํจ์จ ๊ณ์ฐ
if (stageNum === 0) {
failRatio = 0;
} else {
failRatio = (stageNum) / totalNum;
}
// ์ธ์์์์ ํ์ฌ ์คํ
์ด์ง์ ์๋ ์ธ์ ๋นผ์ฃผ๊ธฐ
totalNum -= stageNum;
answer.push({ idx: i, ratio: failRatio });
}
// ์ ๋ ฌ
answer.sort((a, b) => {
// ์คํจ์จ์ด ๊ฐ๋ค๋ฉด ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
if (a.ratio === b.ratio) {
return a.idx - b.idx;
} else {
return b.ratio - a.ratio;
}
})
return answer.map(ele => ele.idx);
}
'๐กAlgorithm > ๋ฌธ์ ํ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JS์๊ณ ๋ฆฌ์ฆ | ํ๋ก๊ทธ๋๋จธ์ค(Level 1) - ๋คํธ๊ฒ์ (0) | 2021.09.13 |
---|---|
JS์๊ณ ๋ฆฌ์ฆ | ํ๋ก๊ทธ๋๋จธ์ค(Level 1) - ๋น๋ฐ์ง๋ (0) | 2021.09.12 |
JS์๊ณ ๋ฆฌ์ฆ | ํ๋ก๊ทธ๋๋จธ์ค(Level 1) - ๋ชจ์๊ณ ์ฌ (0) | 2021.09.09 |
JS์๊ณ ๋ฆฌ์ฆ | ๋ฌธ์์ด ์์ถ (2) | 2021.05.13 |
JS์๊ณ ๋ฆฌ์ฆ | ๊ฐ์ฅ ์งง์ ๋ฌธ์๊ฑฐ๋ฆฌ (0) | 2021.05.09 |