๐ป Programming/Algorithm
[ํ๋ก๊ทธ๋๋จธ์ค Lv. 0] ๊ตฌ์ฌ์ ๋๋๋ ๊ฒฝ์ฐ์ ์
Jiwon()
2023. 8. 19. 22:48
ํ๋ก๊ทธ๋๋จธ์ค ์๊ณ ๋ฆฌ์ฆ ํ์ด
์ฌ์ฉ ์ธ์ด - ์๋ฐ์คํฌ๋ฆฝํธ JavaScript JS
1. ๊ตฌ์ฌ์ ๋๋๋ ๊ฒฝ์ฐ์ ์
1) โ ๋ฌธ์ ์ค๋ช
๋จธ์ฑ์ด๋ ๊ตฌ์ฌ์ ์น๊ตฌ๋ค์๊ฒ ๋๋์ด์ฃผ๋ ค๊ณ ํฉ๋๋ค. ๊ตฌ์ฌ์ ๋ชจ๋ ๋ค๋ฅด๊ฒ ์๊ฒผ์ต๋๋ค. ๋จธ์ฑ์ด๊ฐ ๊ฐ๊ณ ์๋ ๊ตฌ์ฌ์ ๊ฐ์ balls์ ์น๊ตฌ๋ค์๊ฒ ๋๋์ด ์ค ๊ตฌ์ฌ ๊ฐ์ share์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, balls๊ฐ์ ๊ตฌ์ฌ ์ค share๊ฐ์ ๊ตฌ์ฌ์ ๊ณ ๋ฅด๋ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
2) ๐ซ ์ ํ ์ฌํญ
- 1 ≤ balls ≤ 30
- 1 ≤ share ≤ 30
- ๊ตฌ์ฌ์ ๊ณ ๋ฅด๋ ์์๋ ๊ณ ๋ คํ์ง ์์ต๋๋ค.
- share ≤ balls
3) โ ์ ์ถ๋ ฅ ์
balls | share | result |
3 | 2 | 3 |
5 | 3 | 10 |
- ์
์ถ๋ ฅ ์ #1
- ์๋ก ๋ค๋ฅธ ๊ตฌ์ฌ 3๊ฐ ์ค 2๊ฐ๋ฅผ ๊ณ ๋ฅด๋ ๊ฒฝ์ฐ์ ์๋ 3์ ๋๋ค.
- ์
์ถ๋ ฅ ์ #2
- ์๋ก ๋ค๋ฅธ ๊ตฌ์ฌ 5๊ฐ ์ค 3๊ฐ๋ฅผ ๊ณ ๋ฅด๋ ๊ฒฝ์ฐ์ ์๋ 10์ ๋๋ค.
4) ๐ Hint
์๋ก ๋ค๋ฅธ n๊ฐ ์ค m๊ฐ๋ฅผ ๋ฝ๋ ๊ฒฝ์ฐ์ ์ ๊ณต์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด.. ๋ ์ด ๊ณต์ ํํต์์ ๋ดค๋ ๊ฒ ๊ฐ์..!!
2. ์ฌ์ฉํ ๋ฉ์๋: for๋ฌธ
for๋ฌธ์ ๊ฐ๊ฐ 3๊ฐ ์ ์ํ์ฌ ๊ฐ ํฉํ ๋ฆฌ์ผ ๊ฐ(n!, (n-m)!, m!)์ ๊ณ์ฐํด์ฃผ์๋ค.
3. ๋ต์
1) ๋์ ํ์ด
function solution(balls, share) {
let nf = 1; // ๋ถ์
let nminusmf = 1; // ๋ถ๋ชจ ๊ณ์ฐ๊ฐ1
let mf = 1; // ๋ถ๋ชจ ๊ณ์ฐ๊ฐ2
for (let i=balls; i>=1; i--) nf *= i;
for (let j=(balls-share); j>=1; j--) nminusmf *= j;
for (let k=share; k>=1; k--) mf *= k;
return Math.round(nf/(nminusmf*mf))
}
2) ๋ค๋ฅธ ์ฌ๋์ ํ์ด
const ํฉํ ๋ฆฌ์ผ = (num) => num === 0 ? 1 : num * ํฉํ ๋ฆฌ์ผ(num - 1)
function solution(balls, share) {
return Math.round(ํฉํ ๋ฆฌ์ผ(balls) / ํฉํ ๋ฆฌ์ผ(balls - share) / ํฉํ ๋ฆฌ์ผ(share))
}
- ํฉํ ๋ฆฌ์ผ ํจ์๋ฅผ ๋ฐ๋ก ์ ์ํด์ฃผ๊ณ , solution ํจ์์์ ์ฌ๊ทํจ์๋ก์ ํด๊ฒฐํ ํ์ด ๋ฐฉ๋ฒ์ด๋ค.
- ํฉํ ๋ฆฌ์ผ ํจ์๋ฅผ ์ผํญ ์ฐ์ฐ์๋ก ์ ์ํ ์ ์ด ์ข์๋ค.