let's get IT with DAVINA ๐ป
[ํ๋ก๊ทธ๋๋จธ์ค]Lv0. ๊ตฌ์ฌ์ ๋๋๋ ๊ฒฝ์ฐ์ ์ ๋ณธ๋ฌธ
DEV_IN/๋ฌธ์ ํ์ด
[ํ๋ก๊ทธ๋๋จธ์ค]Lv0. ๊ตฌ์ฌ์ ๋๋๋ ๊ฒฝ์ฐ์ ์
๋ค๋น์น์ฝ๋๐ 2023. 3. 17. 15:36โ ๋ฌธ์ ์ค๋ช
๋จธ์ฑ์ด๋ ๊ตฌ์ฌ์ ์น๊ตฌ๋ค์๊ฒ ๋๋์ด์ฃผ๋ ค๊ณ ํฉ๋๋ค. ๊ตฌ์ฌ์ ๋ชจ๋ ๋ค๋ฅด๊ฒ ์๊ฒผ์ต๋๋ค. ๋จธ์ฑ์ด๊ฐ ๊ฐ๊ณ ์๋ ๊ตฌ์ฌ์ ๊ฐ์
balls์ ์น๊ตฌ๋ค์๊ฒ ๋๋์ด ์ค ๊ตฌ์ฌ ๊ฐ์ share์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, balls๊ฐ์ ๊ตฌ์ฌ ์ค share๊ฐ์ ๊ตฌ์ฌ์ ๊ณ ๋ฅด๋ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
๐ซ ์ ํ์ฌํญ
- 1 ≤ balls ≤ 30
- 1 ≤ share ≤ 30
- ๊ตฌ์ฌ์ ๊ณ ๋ฅด๋ ์์๋ ๊ณ ๋ คํ์ง ์์ต๋๋ค.
- share ≤ balls
๐๏ธ ์ ์ถ๋ ฅ ์
balls | share | result |
3 | 2 | 3 |
5 | 2 | 10 |
๐๏ธ ์ ์ถ๋ ฅ ์ ์ค๋ช
- ์๋ก ๋ค๋ฅธ ๊ตฌ์ฌ 3๊ฐ ์ค 2๊ฐ๋ฅผ ๊ณ ๋ฅด๋ ๊ฒฝ์ฐ์ ์๋ 3์ ๋๋ค.
๐๏ธ HINT
์๋ก ๋ค๋ฅธ n๊ฐ ์ค m๊ฐ๋ฅผ ๋ฝ๋ ๊ฒฝ์ฐ์ ์ (์กฐํฉ nCm)
โ๏ธ๋น๋'s ํ์ด
๋ก์ง ์์ฒด๋ ๋ง์์ง๋ง Math.round ๋๋ BigInt๋ฅผ ์ฌ์ฉํ์ง ์์ ์ ์ถ ํ ๊ณ์ 80์ ์ด์๋ค..
function solution(balls, share) {
//ํฉํ ๋ฆฌ์ผ์ ๊ตฌํ๋ ํจ์
function factorial(n){
let base=BigInt(1);
for(let i=2;i<=n;i++){
base=base*BigInt(i);
}
return base;
}
return (factorial(balls)/(factorial(balls-share)*factorial(share)));
}
//OR
function solution(balls, share) {
//ํฉํ ๋ฆฌ์ผ์ ๊ตฌํ๋ ํจ์
function factorial(n){
let base=1;
for(let i=2;i<=n;i++){
base=base*(i);
}
return base;
}
return Math.round(factorial(balls)/(factorial(balls-share)*factorial(share)));
}
⊕ Extra Knowledge
์ฌ๋ฌ ๋ธ๋ก๊ทธ์ ํ์ด ์ค๋ช ์ ๋ด๋ Math.round๋ฅผ ์ด์ฉํด ์ ๋ฐ์ฌ๋ฆผ์ ํด์ผํ๋์ง ์ดํด๊ฐ ๊ฐ์ง ์์๋ค.. ๊ฒฝ์ฐ์ ์๋ฉด ์คํ๋ ค Math.floor์ด ๋ง์ง ์์๊น๋ ์๊ฐ์ ํ๋๋ฐ ์ปดํจํฐ๊ฐ ์ ์๋ฅผ ์ฝ์ด๋ค์ด๋ ๋ฐฉ์์ ์ ๋ชฐ๋ผ์ ์๋ค.. ์ด๋์ CS๊ธฐ์ด์ง์์ด ์ค์ํ๊ตฌ๋ ์ถ์๋ค.
- JS Number ๋ฒ์ → Number ํ์ ์ ๋ฐฐ์ ๋ฐ๋ 64๋นํธ ์ด์ง ํ์ IEEE 754 ๊ฐ(-(2^53 − 1)๋ถํฐ 2^53 − 1๊น์ง์ ์)์ ๋๋ค.
- BUT, 30! → 2.6525286e+32 (์ปดํจํฐ๊ฐ ์ฝ์ ์ ์๋ ์ซ์์ ๋ฒ์๋ณด๋ค ํจ์ฌ ํผ)
- ๋ฐ๋ผ์, ์ง์ VS ๊ฐ์์์ ๊ฐ์๋ถ๋ถ์ด ๋ค ๋ฒ๋ ค์ง๊ธฐ ๋๋ฌธ์ ๋ง์ง๋ง์ ๊ฐ์ฅ ์ ๋ต์ ๊ฐ๊น์ด ์๊ฐ ๋๊ธฐ ์ํด์ ๋ฐ์ฌ๋ฆผ์ ํด์ค์ผํ๋ค.
๋ถ๋ ์์์ ๊ธฐ์๋ฒ์์ ์ด๋ค ์์ ์ ํจ ์๋ฆฟ์๋ฅผ ๋ํ๋ด๋ ๋ถ๋ถ. ์๋ฅผ ๋ค๋ฉด, 10์ง์ 0.0001234๋ 0.1234-3์ผ๋ก ํํ๋๋๋ฐ, ์ด๋์ 0.1234๋ฅผ ๊ฐ์๋ผ๊ณ ํ๊ณ -3์ ์ง์(exponent)๋ผ๊ณ ํ๋ค.
- OR
- BigInt (ํฐ ์ ์๋ฅผ ๋ณด๋ค ์ปดํจํฐ๊ฐ ์ ํํ๊ฒ ์ฝ์ ์ ์๊ฒ ํด์ฃผ๋ ๋ฐฉ์) Math๊ฐ์ฒด์ method๋ Number๋ง ๋ค๋ฃจ๊ธฐ ๋๋ฌธ!
BigInt๋ Number ์์ ๊ฐ์ด ์์ ์ ์ผ๋ก ๋ํ๋ผ ์ ์๋ ์ต๋์น์ธ 2^53 - 1๋ณด๋ค ํฐ ์ ์๋ฅผ ํํํ ์ ์๋ ๋ด์ฅ ๊ฐ์ฒด์ ๋๋ค.
- ๋ฐ๋ผ์, ํฉํ ๋ฆฌ์ผ ํจ์๋ฅผ ๊ตฌํํ ๋, ๋ค์ด์ค๋ ์ซ์๋ค์ ๋ค BigInt() ๋ก ๋ณํํด์ฃผ๋ฉด Math.round๋ฅผ ์ํด๋ ํฐ ์๋ฅผ ๋ค๋ฃฐ ์ ์๊ฒ๋จ!
'DEV_IN > ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค]Lv0. ๋ชจ์ ์ ๊ฑฐ (0) | 2023.03.17 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค]Lv0. 2์ฐจ์์ผ๋ก ๋ง๋ค๊ธฐ (0) | 2023.03.17 |
[ํ๋ก๊ทธ๋๋จธ์ค]Lv0. ๋ชจ์ค๋ถํธ(1) (1) | 2023.03.16 |
[๋ฐฑ์ค #1406] ์๋ํฐ (2) | 2023.03.16 |
[ํ๋ก๊ทธ๋๋จธ์ค] Lv0. ์ง๋ฃ ์์ ์ ํ๊ธฐ (2) | 2023.03.15 |
Comments