Algorithm/Programmers
[JavaScript] ํ๋ก๊ทธ๋๋จธ์ค - ์คํจ์จ
๊ฐ๋ฐ๊ฐ๊ตด๐ธ
2022. 9. 5. 18:01
[๋ฌธ์ ]
https://school.programmers.co.kr/learn/courses/30/lessons/42889
[ํ์ด]
1. level ๋ฐฐ์ด์ ํ์ฌ ์คํ ์ด์ง(๋ ๋ฒจ)์ ๋๋ฌํ ํ๋ ์ด์ด ์๋ฅผ ์ ์ฅํฉ๋๋ค.
2. clear ๋ณ์์ ๋ง์ง๋ง ๋ ๋ฒจ๊น์ง ํด๋ฆฌ์ดํ ํ๋ ์ด์ด ์๋ฅผ ์ ์ฅํฉ๋๋ค.
- ๋ง์ง๋ง ๋ ๋ฒจ๊น์ง ํด๋ฆฌ์ดํ ํ๋ ์ด์ด ์ = level[N+1]
3. fail ๋ฐฐ์ด์ [์คํ ์ด์ง, ์คํ ์ด์ง ์คํจ์จ] ํํ๋ก ๋ชจ๋ ์คํ ์ด์ง์ ์คํจ์จ์ ์ ์ฅํฉ๋๋ค.
- ๋ง์ฝ ํ์ฌ ์คํ ์ด์ง๊ฐ i๋ผ๋ฉด, ์คํจ์จ = (ํ์ฌ ์คํ ์ด์ง์ ์๋ ํ๋ ์ด์ด ์) / (i~N+1 ๊น์ง ๋๋ฌํ ํ๋ ์ด์ด ์์ ํฉ)
- level ๋ฐฐ์ด์ N๋ถํฐ 1๊น์ง ์คํ ์ด์ง๋ฅผ ํ๋จ๊ณ์ฉ ๋ฎ์ถ์ด ๊ฐ๋ฉฐ clear ๋ณ์๋ฅผ ๋ํด ์ฐ์ฐ์ ์ต์ํ
๋ฐ๋ผ์ ์ ์ถ๋ ฅ ์ 1๋ฒ์ fail ๋ฐฐ์ด์ ๊ณ์ฐํ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
[
[ 5, 0 ],
[ 4, 0.5 ],
[ 3, 0.5 ],
[ 2, 0.42857142857142855 ],
[ 1, 0.125 ]
]
4. ๋ง์ง๋ง์ผ๋ก sort ์ฐ์ฐ์ ํตํด fail ๋ฐฐ์ด์ ์คํจ์จ์ด ๋์ ์คํ ์ด์ง ๋ถํฐ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ์ฌ answer์ ์ ์ฅํฉ๋๋ค.
fail.sort((a, b) => a[1] === b[1] ? a[0] - b[0] : b[1] - a[1]);
fail.forEach(([a, b]) => answer.push(a));
[์ฝ๋]
function solution(N, stages) {
var answer = [];
const level = Array.from({length: N+2}, () => 0);
stages.forEach((num) => {
level[num]++;
})
// [๋ ๋ฒจ, ์คํจ์จ]
const fail = [];
let clear = level[N+1];
for(let i=N;i>=1;i--) {
clear += level[i];
clear === 0 ? fail.push([i, 0]) : fail.push([i, level[i]/clear]);
}
fail.sort((a, b) => a[1] === b[1] ? a[0] - b[0] : b[1] - a[1]);
fail.forEach(([a, b]) => answer.push(a));
return answer;
}