[BOJ]一二三プラスPython&Kotlin


問題に答えろ!
これは簡単なDP問題です.
問題では、nは11に制限されているため、11個の配列を作成し、それらによって注釈することができる.
memorizationを行う配列名がdpの場合
式は次のとおりです.dp[i] = dp[i-1] + dp[i-2] + dp[i-3]これは問題をすばやく解くことができる問題です.
私の知っている限りでは、Pythonはアルゴリズムの問題を解く際にprint関数の制約はそれほど大きくありません.複数回使用しても問題がある場合がございます例えば、printを最大10万回使用する必要があるという問題も可決された.しかし,kotlinではprintlnが多く用いられるためstringBuilderを用いて出力効率を向上させる.
次はPythonの解答です.
import sys

input = sys.stdin.readline

T = int(input())
dp = [0] * 12
dp[1] = 1
dp[2] = 2
dp[3] = 4

for i in range(4, 12):
    dp[i] = dp[i-1] + dp[i-2] + dp[i-3]

for _ in range(T):
    print(dp[int(input())])
次はKotlinの解答です.
import java.io.BufferedReader
import java.io.InputStreamReader

fun main() {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val T = br.readLine().toInt()

    val dp = IntArray(12){0}

    dp[1] = 1
    dp[2] = 2
    dp[3] = 4

    for (i in 4 until 12) {
        dp[i] = dp[i-1] + dp[i-2] + dp[i-3]
    }

    val sb = StringBuilder()
    var n: Int
    for (i in 0 until T) {
        n = br.readLine().toInt()
        sb.append("${dp[n]}\n")
    }
    println(sb)
}
개발예술서비스작품です.