From 8f84a61a23160776e30e5b64f803ede70820255b Mon Sep 17 00:00:00 2001 From: sm4640 Date: Fri, 27 Mar 2026 10:10:15 +0900 Subject: [PATCH] =?UTF-8?q?9095-s3=20=EC=84=B1=EA=B3=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- workbook_7319/silver/9095-s3.py | 36 +++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 workbook_7319/silver/9095-s3.py diff --git a/workbook_7319/silver/9095-s3.py b/workbook_7319/silver/9095-s3.py new file mode 100644 index 0000000..fd05d53 --- /dev/null +++ b/workbook_7319/silver/9095-s3.py @@ -0,0 +1,36 @@ +# 1,2,3 더하기 + +import sys + +input = sys.stdin.readline + +def solution(): + t = int(input().rstrip()) + + dp = [0] * (11) + dp[0] = 1 + dp[1] = 1 + dp[2] = 2 + + for i in range(3, 11): + dp[i] = dp[i-1]+dp[i-2]+dp[i-3] + + for _ in range(t): + n = int(input().rstrip()) + print(dp[n]) + + return + + +solution() + +""" +걸린 시간: 20분 + +시간 복잡도: n개의 dp 테이블을 한번만 채우면 되기 때문에 O(n)이다. + +해설: 이 문제는 순서가 다른 것은 다르게 보는 순열이다. 따라서 순서를 고정하지 않고, 자유도를 주어서 현재 보는 수로 오기 위해 +1, +2, +3을 한 수들의 +모든 경우를 다 더하면 된다. +반면 순서가 달라도 같은 것으로 보는 조합의 경우에는 순서를 고정시켜줘야 한다. 따라서 1만 썼을 때 경우의 수를 다 계산하고, 2를 썼을 때 경우, 3을 썼을 때 경우, +이렇게 나누면 순서가 고정되어 자동으로 조합 계산을 한 것처럼 된다. +""" \ No newline at end of file