[Baekjoon] 1010 - πŸŒ‰λ‹€λ¦¬ 놓기

ChobbyΒ·2023λ…„ 11μ›” 22일
1

Baekjoon

λͺ©λ‘ 보기
91/108

πŸ˜€λ¬Έμ œ

μž¬μ›μ΄λŠ” ν•œ λ„μ‹œμ˜ μ‹œμž₯이 λ˜μ—ˆλ‹€. 이 λ„μ‹œμ—λŠ” λ„μ‹œλ₯Ό 동μͺ½κ³Ό μ„œμͺ½μœΌλ‘œ λ‚˜λˆ„λŠ” 큰 일직선 λͺ¨μ–‘μ˜ 강이 흐λ₯΄κ³  μžˆλ‹€. ν•˜μ§€λ§Œ μž¬μ›μ΄λŠ” 닀리가 μ—†μ–΄μ„œ μ‹œλ―Όλ“€μ΄ 강을 κ±΄λ„ˆλŠ”λ° 큰 λΆˆνŽΈμ„ κ²ͺκ³  μžˆμŒμ„ μ•Œκ³  닀리λ₯Ό μ§“κΈ°λ‘œ κ²°μ‹¬ν•˜μ˜€λ‹€. κ°• μ£Όλ³€μ—μ„œ 닀리λ₯Ό 짓기에 μ ν•©ν•œ 곳을 μ‚¬μ΄νŠΈλΌκ³  ν•œλ‹€. μž¬μ›μ΄λŠ” κ°• 주변을 λ©΄λ°€νžˆ 쑰사해 λ³Έ κ²°κ³Ό κ°•μ˜ μ„œμͺ½μ—λŠ” N개의 μ‚¬μ΄νŠΈκ°€ 있고 동μͺ½μ—λŠ” M개의 μ‚¬μ΄νŠΈκ°€ μžˆλ‹€λŠ” 것을 μ•Œμ•˜λ‹€. (N ≀ M)

μž¬μ›μ΄λŠ” μ„œμͺ½μ˜ μ‚¬μ΄νŠΈμ™€ 동μͺ½μ˜ μ‚¬μ΄νŠΈλ₯Ό λ‹€λ¦¬λ‘œ μ—°κ²°ν•˜λ €κ³  ν•œλ‹€. (μ΄λ•Œ ν•œ μ‚¬μ΄νŠΈμ—λŠ” μ΅œλŒ€ ν•œ 개의 λ‹€λ¦¬λ§Œ 연결될 수 μžˆλ‹€.) μž¬μ›μ΄λŠ” 닀리λ₯Ό μ΅œλŒ€ν•œ 많이 μ§€μœΌλ €κ³  ν•˜κΈ° λ•Œλ¬Έμ— μ„œμͺ½μ˜ μ‚¬μ΄νŠΈ 개수만큼 (N개) 닀리λ₯Ό μ§€μœΌλ €κ³  ν•œλ‹€. λ‹€λ¦¬λΌλ¦¬λŠ” μ„œλ‘œ 겹쳐질 수 μ—†λ‹€κ³  ν•  λ•Œ 닀리λ₯Ό 지을 수 μžˆλŠ” 경우의 수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λΌ.


πŸ˜μž…λ ₯

μž…λ ₯의 첫 μ€„μ—λŠ” ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ 개수 Tκ°€ 주어진닀. κ·Έ λ‹€μŒ 쀄뢀터 각각의 ν…ŒμŠ€νŠΈμΌ€μ΄μŠ€μ— λŒ€ν•΄ κ°•μ˜ μ„œμͺ½κ³Ό 동μͺ½μ— μžˆλŠ” μ‚¬μ΄νŠΈμ˜ 개수 μ •μˆ˜ N, M (0 < N ≀ M < 30)이 주어진닀.


πŸ˜‚μΆœλ ₯

각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ— λŒ€ν•΄ 주어진 μ‘°κ±΄ν•˜μ— 닀리λ₯Ό 지을 수 μžˆλŠ” 경우의 수λ₯Ό 좜λ ₯ν•œλ‹€.

예제 μž…λ ₯ 1 
3
2 2
1 5
13 29
예제 좜λ ₯ 1 
1
5
67863915

🀣좜처

  • 문제λ₯Ό λ§Œλ“  μ‚¬λžŒ: i274
  • 데이터λ₯Ό μΆ”κ°€ν•œ μ‚¬λžŒ: paraworld

πŸ˜ƒμ•Œκ³ λ¦¬μ¦˜ λΆ„λ₯˜

  • μˆ˜ν•™
  • λ‹€μ΄λ‚˜λ―Ή ν”„λ‘œκ·Έλž˜λ°
  • μ‘°ν•©λ‘ 

πŸ˜Žλ‚˜μ˜ν’€μ΄

function factorial(n) {
    if(n <= 1) return 1
    return n * factorial(n-1)
}

const input = require('fs').readFileSync('/dev/stdin').toString().trim().split("\n")
const result = []
for(let i = 0 ; i < input.length ; i ++) {
    if(!i) continue
    const [N, M] = input[i].split(" ").map(a => Number(a))
    const [more, less] = [Math.max(N, M), Math.min(N, M)]
    // μ‘°ν•© 경우의 수
    const curCombination = factorial(more) / (factorial(more-less) * factorial(less))
    result.push(Math.round(curCombination))
}

console.log(result.join("\n"))
profile
λ‚΄ 지식을 κ³΅μœ ν•  수 μžˆλŠ” λŒ€λ‹΄ν•¨

0개의 λŒ“κΈ€