2193-s3 성공
This commit is contained in:
34
workbook_7319/silver/2193-s3.py
Normal file
34
workbook_7319/silver/2193-s3.py
Normal file
@@ -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이거나로 완전히 케이스를 분리했기 때문에 중복은 없다.
|
||||
"""
|
||||
Reference in New Issue
Block a user