다이나믹프로그래밍

코딩테스트

백준 - 단기간 성장 1

12865. [다이나믹프로그래밍] 평범한 배낭 (골드5)🔗 문제/코드 보기dp = [[0*(k+1)]*(n+1)]이렇게 하면 초기화 제대로 안 됨dp = [[0] * (k + 1) for _ in range(n + 1)]이렇게 해야 함1655. [우선순위 큐]가운데를 말해요 (골드2)🔗 문제/코드 보기원래는 sort() 썼는데  당연히 시간초과 뜸leftHeap, rightHeap ( 짝수개인 경우 작은수를 중앙값으로 부르기 위함) 로 나누어 저장left의 root와 right의 root 비교하여, left가 더 큰 경우 두 루트 교환파이썬에서 힙은 heapq로 선언heapq.heappop(leftHeap)heapq.heappush(leftHeap, -number) #leftHeap은 최대힙이기 때..

알고리즘

[이코테] Chapter 8. 다이나믹 프로그래밍 (java)

📍개념1. 다이나믹 프로그래밍큰 문제를 작게 나누고, 같은 문제라면 한 번씩만 풀어 문제를 효율적으로 해결하는 알고리즘 기법따라서 점화식부터 세운다2. 탑다운 방식재귀 함수를 이용하는 방법메모제이션: 한 번 구한 결과를 메모리 공간에 메모해 두고, 같은 값을 다시 호출하면 메모리에서 꺼내오는 기법. 탑다운 방식에서 사용 가능public static long fibo(int n) { // 종료 조건 if (n == 1 || n == 2) return 1; // 계산한 적 있다면 그 값 반환 if (d[n] != 0) return d[n]; // 계산한 적 없다면 계산 후 값 반환 d[n] = fibo(n - 1) + fibo(n - 2); return d[n]; }3. 보텀업 방식반복..

eunjinee
'다이나믹프로그래밍' 태그의 글 목록