Self-Driven Person, 권혁태입니다.
/
Archive
/
Episodes
/
알고리즘
/
유형
/
Dynamic Programming
Search
Dynamic Programming
피보나치 함수
1003번: 피보나치 함수
다음 소스는 N번째 피보나치 수를 구하는 C++ 함수이다. int fibonacci(int n) { if (n == 0) { printf("0"); return 0; } else if (n == 1) { printf("1"); return 1; } else { return fibonacci(n‐1) + fibonacci(n‐2); } } fibonacci(3) 을 호출하면 다음과 같은 일이 일어난다. fibonacci(3)은 fibonacci(2)와 fibonacci(1) (첫 번째 호출)을 호출한다.
신나는 함수 실행
9184번: 신나는 함수 실행
포도주 시식
2156번: 포도주 시식
효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규칙이 있다. 포도주 잔을 선택하면 그 잔에 들어있는 포도주는 모두 마셔야 하고, 마신 후에는 원래 위치에 다시 놓아야 한다. 연속으로 놓여 있는 3잔을 모두 마실 수는 없다.
맨날 메모이제이션으로만 풀었는데, Tabulazation으로도 풀수 있다는 점을 가르쳐준 문제
Bottom - Up : Tabulazation → 보통 O(n)이다.
Up - Bottom : Memoization → O(n)은 아니다..? 시간 복잡도가 어떻게 되지 이거..?