From 97cf2d9e5487a6a376a1ed0548b1e494572cacde Mon Sep 17 00:00:00 2001 From: sm4640 Date: Fri, 27 Mar 2026 15:26:04 +0900 Subject: [PATCH] =?UTF-8?q?2193-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/2193-s3.py | 34 +++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 workbook_7319/silver/2193-s3.py diff --git a/workbook_7319/silver/2193-s3.py b/workbook_7319/silver/2193-s3.py new file mode 100644 index 0000000..a2e1e2f --- /dev/null +++ b/workbook_7319/silver/2193-s3.py @@ -0,0 +1,34 @@ +# 이친수 + +import sys + +input = sys.stdin.readline + +def solution(): + n = int(input().rstrip()) + + dp = [0] * (n+1) + dp[0] = 1 + dp[1] = 1 + + for i in range(2, n): + dp[i] = dp[i-2]+dp[i-1] + + print(dp[n-1]) + + return + + +solution() + +""" +걸린 시간: 11분 + +시간 복잡도: dp 테이블 n개를 채우면 되기 때문에 O(n)이다. + +해설: 현재 칸을 볼 때 0을 넣을 거면 앞이 뭐든 상관없다. 따라서 dp[i-1]을 그대로 가져오면 된다. +반면에 1을 넣을 거면 앞이 무조건 0이어야 한다. 따라서 01을 쌍으로 넣어야 하고, 1904번의 문제에서 01과 0 타일로 채우는 것과 같은 문제이다. +따라서 두 칸을 통제해야하기 때문에 dp[i-2]개수만큼인 것이다. +따라서 dp[i] = dp[i-1] + dp[i-2]이다. +현재 칸이 0이거나 1이거나로 완전히 케이스를 분리했기 때문에 중복은 없다. +""" \ No newline at end of file