์ดํญ ๊ณ์ 1
๋ฌธ์
ํ์ด ์ธ์ด
Kotiln
์ฝ๋
import java.util.*
lateinit var array: Array<Int>
var n = 0
var k = 0
fun main() = with(Scanner(System.`in`)) {
n = nextInt()
k = nextInt()
// ์ฌ๊ท ๋์ DP๋ก ํฉํ ๋ฆฌ์ผ ๊ตฌํ
array = Array(n + 1) { 1 }
// ํฉํ ๋ฆฌ์ผ ๊ณ์ฐ
for (i in 2..n) {
array[i] = array[i - 1] * i
}
// ์กฐํฉ ๊ณต์ ์ ์ฉ
// nCr = n! / (n-r)! * r!
println(array[n] / (array[n - k] * array[k]))
}
ํ์ด ๋ฐฉ๋ฒ
๊ณ ๋ฑํ๊ต ๋ ๋ฐฐ์ด ์กฐํฉ ๊ณต์
์ ์ ์ฉํ๋ฉด ์ด๋ ต์ง ์๊ฒ ํด๊ฒฐํ ์ ์๋ค.
๊ฒฐ๊ณผ
์ดํญ ๊ณ์ 2
๋ฌธ์
์ฝ๋
import java.util.*
lateinit var array: Array<Array<Int>>
var n = 0
var k = 0
fun main() = with(Scanner(System.`in`)) {
n = nextInt()
k = nextInt()
// ํ์ค์นผ์ ์ผ๊ฐํ์ ์ฌ์ฉํ๊ธฐ ์ํ ๋ฐฐ์ด ์ด๊ธฐํ
array = Array(n + 1) { Array(n + 1) { 1 } }
// nCr = n-1Ck-1 + n-1Ck
for (i in 1..n) {
for (j in 0..n) {
if (i == j || j == 0) {
array[i][j] = 1
} else {
array[i][j] = (array[i - 1][j - 1] + array[i - 1][j]) % 10007
}
}
}
println(array[n][k])
}
ํ์ด ๋ฐฉ๋ฒ
์ดํญ ๊ณ์ 1
๋ณด๋ค ์๊ฐ ์ปค์ก๋ค. ๋จ์ํ DP
๋ก ๊ณ์ฐํ๋ฉด Int
๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฏ๋ก ํฐ์ ธ๋ฒ๋ฆฐ๋ค. Long
์ผ๋ก ๊ณ์ฐํด๋ ํฐ์ ธ๋ฒ๋ฆฐ๋ค. ๋ฌธ์ ์์ ์๋ ค์ค ๊ฒ์ฒ๋ผ ๋ชจ๋๋ฌ
์ฐ์ฐ์ ์ ์ฉํด์ผ ํ๋ค. ์ฒ์์๋ ์ด์ ๋ฌธ์ ์์ ๋ชจ๋๋ฌ ๋๋์
์ ์ ์ฉํ๋ ค ํ๋๋ฐ ์ด ๋ถ๋ถ์ด ์๊ฐ๋ณด๋ค ๊น๋ค๋ก์์ ์ผ๋จ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์ ๊ทผํ๋ค.
ํ์ค์นผ์ ์ผ๊ฐํ
์ ์ ์ฉํ๋ค.
๊ฒฐ๊ณผ