문제를 2가지 방법으로 풀었다.


첫 번째 방법은 노트를 없이 풀었는데, 문제를 잘 못 이해해서 시간초과가 났고,

두 번째 풀이는 메모이제이션을 이용해 코드를 작성했다.


음..

DP로 풀었다. 계단문제랑 비슷하다.


처음에는 그냥 3나눠지면 3하고 2되면 2하고 했는데, 그게 아니라 경우의수가 최소일 때 를 구하는것 이였다.

그래서 메모이제이션이랑 Stack을 이용해서 경로구하는거 까지 구현했다.


와.. 문제를 푸는데 2시간이 걸렸다.


코드에 변화가 2번이 일어났는데, 처음에는 subproblem을 너무 쉽게 생각했고,

그 다음에는 반복문 내용을 수정했다..


풀이 방법은

위에 1x2랑 1x1로 채우고 밑에를 n-1로 해줘서 d[n-1] * 2

그리고 2x1, 1x1로 채우고 밑에를 n-2로 채워서 d[n-2] * 3

그리고 1x2, 2x1, 1x1을 전부 사용해 위에를 채운건 d2[n-1]+d[n-3] * 2

합치면 d[n-1]*2+d[n-2]*3+(d2[n-1]+d[n-3])*2


+ Recent posts