2023. 7. 21. 09:39ㆍ자바스크립트 정리
동적계획법
▶ 해결한 작은 문제로 큰 문제를 해결하는 문제 풀이 방식
▶ 그리디나 백트래킹처럼 특정 알고리즘이 아닌 문제 해결 방식을 의미한다.
▶ Dynamic Programming(DP)이라고도 부른다.
▶ 동적 계획법이 어렵게 느껴지는 원인 중 하나
▶ Dynamic하지 않고 Programming과도 관련이 없다
▶ 메모리를 많이 사용하는 대신 빠른 성능을 자랑한다.
▶ 두 가지 방법론이 있다.
▶ 메모이제이션
▶ 타뷸레이션
메모이제이션
▶ 하양식 접근법
▶ 동적 계획법에서 작은 문제들의 결과는 항상 같다.
▶ 따라서 이 결과들을 메모리에 저장해 필요할 때 꺼내 쓰는 것이 메모이제이션이다.
타뷸레이션
▶ 상향식 접근법
▶ 필요한 값들을 미리 계산해두는 것
▶ 메모이제이션은 필요할 때 계산한다면(Lazy evaluation)
타뷸레이션은 미리 계산해둔다(Eager evaluation)
▶ 보통 코딩 테스트에선 메모이제이션을 쓰는 경우가 대부분이다.
다음과 같이 미리 값들을 구해두고 꺼내쓰는 것이 타뷸레이션
동적 계획법 문제 어떻게 접근할까?
▶ 동적 계획법 유형은 키워드만으로 동적 계획법 문제임을 알기 어렵다.
▶ 그렇게 때문에 문제 유형을 알수 없다면 다음을 확인해보자.
▶ 가장작은 문제를 정의 할 수 있는지?
▶ 작은 문제를 통해 큰 문제를 해결할 수 있는 규칙이 있는지?
▶ 위 두가지가 가능하다면 동적 계획법 문제이다.
▶ 간혹 메모리를 너무 사용하여 통과 못하는 경우도 있다.
▶ 이런경우엔 백트래킹을 이용할 수 있지만 보통 코딩 테스트에서 자주 나오지는 않는다.
'자바스크립트 정리' 카테고리의 다른 글
엣지케이스 찾는법 (0) | 2023.07.21 |
---|---|
코딩테스트 문제 유형 파악 (0) | 2023.07.21 |
자료구조 & 알고리즘 (백트래킹) (0) | 2023.07.20 |
자료구조 & 알고리즘 (그리디) (0) | 2023.07.20 |
자료구조 & 알고리즘(너비 우선 탐색, 깊이 우선 탐색) (0) | 2023.07.20 |