๐Ÿ“– TIL - "ํŒฉํ† ๋ฆฌ์–ผ ํ•จ์ˆ˜์— ์ด๋Ÿฐ ํ•จ์ •์ด?!" - ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ฑ๋Šฅ ๊ฐœ์„ ๊ธฐ ๐ŸŽฏ

์Š˜ยท2025๋…„ 1์›” 30์ผ

๐Ÿ“– TIL

๋ชฉ๋ก ๋ณด๊ธฐ
41/90

๐Ÿ“Œ ๋ฌธ์ œ ์ƒํ™ฉ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค "๊ตฌ์Šฌ์„ ๋‚˜๋ˆ„๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜" ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ๋ฐœ๊ฒฌํ•œ ํฅ๋ฏธ๋กœ์šด ์ด์Šˆ๋“ค

์ฒ˜์Œ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

function factorial(num) {
    if(num === 0 || num === 1) return 1;
    return num * factorial(num - 1);
}

function solution(balls, share) {
    return factorial(balls) / (factorial(balls - share) * factorial(share));
}

๐Ÿค” ๋ฐœ๊ฒฌํ•œ ๋ฌธ์ œ์ ๋“ค

  1. ํฐ ์ˆ˜ ์ž…๋ ฅ ์‹œ ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ

    • ์žฌ๊ท€ ํ˜ธ์ถœ์ด ๋„ˆ๋ฌด ๊นŠ์–ด์ง€๋ฉด ๋ฐœ์ƒ
    • ์˜ˆ: solution(100, 50) ์—์„œ ํฌ๋ž˜์‹œ
  2. JavaScript Number์˜ ํ•œ๊ณ„

    • ์ตœ๋Œ€ ์•ˆ์ „ ์ •์ˆ˜: 9007199254740991 (์•ฝ 9์ฒœ์กฐ)
    • ํŒฉํ† ๋ฆฌ์–ผ ๊ณ„์‚ฐ ์‹œ ์‰ฝ๊ฒŒ ์ดˆ๊ณผ๋จ

๐Ÿ’ก ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

1. BigInt ๋„์ž…

function factorial(n) {
    let result = 1n;  // BigInt ์‚ฌ์šฉ
    for (let i = 2n; i <= BigInt(n); i++) {
        result *= i;
    }
    return result;
}

2. ์žฌ๊ท€ โ†’ ๋ฐ˜๋ณต๋ฌธ

  • ์žฌ๊ท€ ๋Œ€์‹  for๋ฌธ ์‚ฌ์šฉ์œผ๋กœ ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋ฐฉ์ง€
  • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๊ฐœ์„ 
  • ์‹คํ–‰ ์†๋„ ํ–ฅ์ƒ

โœจ ์ƒˆ๋กญ๊ฒŒ ๋ฐฐ์šด ์ 

1. BigInt

  • JavaScript์˜ ์ƒˆ๋กœ์šด ์ˆซ์ž ํƒ€์ž…
  • ๋งค์šฐ ํฐ ์ •์ˆ˜๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์‚ฌ์šฉ
  • ์ˆซ์ž ๋’ค์— 'n' ๋ถ™์—ฌ์„œ ํ‘œํ˜„ (์˜ˆ: 1234n)

2. ์žฌ๊ท€ vs ๋ฐ˜๋ณต๋ฌธ

  • ์žฌ๊ท€: ์ฝ”๋“œ๋Š” ๊ฐ„๋‹จํ•˜์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๅคš
  • ๋ฐ˜๋ณต๋ฌธ: ์ฝ”๋“œ๋Š” ๊ธธ์–ด์ง€์ง€๋งŒ ์„ฑ๋Šฅ good

๐Ÿš€ ์ตœ์ข… ๊ฐœ์„  ์ฝ”๋“œ

function factorial(n) {
    let result = 1n;
    for (let i = 2n; i <= BigInt(n); i++) {
        result *= i;
    }
    return result;
}

function solution(balls, share) {
    if (balls < share) return 0;
    return Number(factorial(balls) / (factorial(balls - share) * factorial(share)));
}

โญ๏ธ ๊ตํ›ˆ

  1. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋Š” ์ •ํ™•์„ฑ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์„ฑ๋Šฅ๋„ ์ค‘์š”
  2. JavaScript์˜ ์ˆซ์ž ์ฒ˜๋ฆฌ ํ•œ๊ณ„๋ฅผ ํ•ญ์ƒ ๊ณ ๋ คํ•ด์•ผ ํ•จ
  3. "๋  ๊ฒƒ ๊ฐ™์€๋ฐ?" ๋ณด๋‹ค๋Š” "๋ฐ˜๋ก€๋Š” ์—†์„๊นŒ?"๋ฅผ ๋” ๊ณ ๋ฏผํ•ด๋ณด์ž!

์ด๋ฒˆ ๋ฌธ์ œ๋ฅผ ํ†ตํ•ด ๋‹จ์ˆœํžˆ ์ˆ˜ํ•™์  ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์„ ๋„˜์–ด, ์‹ค์ œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ์  ์ œ์•ฝ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํŠนํžˆ BigInt์˜ ์กด์žฌ๋Š” ๋†€๋ผ์› ๋‹ค! ๐Ÿ˜ฒ

profile
์ฃผ๋‹ˆ์–ด ํ”„๋ก ํŠธ์—”๋“œ ์„ฑ์žฅ๊ธฐ ๊ธฐ๋ก๊ธฐ๋ก

0๊ฐœ์˜ ๋Œ“๊ธ€