알고리즘 공부/백준

(Python)백준 코딩테스트 연습 - 타일링(1793)

HRuler 2023. 5. 11. 11:34

1. 문제

https://www.acmicpc.net/problem/1793

 

1793번: 타일링

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 정수 n이 주어진다.

www.acmicpc.net

2. 풀이

import sys
input = sys.stdin.readline

# inputList : input값을 저장할 리스트
inputList = []
while True:
    try:
        inputValue = input()
        inputList.append(int(inputValue))
    except:
        break


# maxValue : input값 중 max 값
maxValue = max(inputList)
    
# dpList : dp값을 저장할 리스트
dpList = [1 for i in range(maxValue + 1)]
dpList[2] = 3

for i in range(3, maxValue + 1):
    dpList[i] = dpList[i - 1] + (dpList[i - 2] * 2)
for i in inputList:
    print(dpList[i])

3. FeedBack

 - 타일링 문제는 Dynamic Programming을 이용한 풀이를 요구하는 문제이다.

 역시 알고리즘의 대표적인 문제답게 점화식을 생각해내는 과정이 꽤나 오래걸렸다.

 반복적인 연습이 도움이 될거라 생각하지만, 예전에 개발자 친구가 얘기했던 "DP는 개발에 재능있는 친구들이 잘하는 영역인것 같다."라는 말이 계속 생각난다.ㅠ

 노력으로 재능의 차이를 극복해보겠다!