그래프의 독립집합은 구할수 없지만, 트리의 독립집합은 다이나믹으로 구할수 있다.
D[V][0]:V가 포함되지않음
앞의 문제랑 비슷하다.
???
k번째를 구하려면 우선 전체 방법의 수를 알아야 한다.
D[n-1]: 1로 시작하는 합의 개수
D[n-2]
D[n-3]: 3으로 시작하는..
D[N][L]: 길이가 N인 괄호 문자열의 개수
L:짝이 맞지 않은 여는 괄호의 개수
L의 값이 음수가 나오는 경우는 올바른 괄호 문자열이 아니다. 한번 짝이 맞지 않아버리면 그 뒤도 계속 짝이 맞지 않기 때문이다.
D[N][L]: 길이가 N인 괄호 문자열의 개수 -> 중에서 짝이 맞지 않은 문자열이 L개
3차원으로 풀소도 있고, 2차원으로 풀수도 있다.
피보나치수 구하기랑 비슷하기때문에, 다이나믹으로 풀수있지만, N제한이 너무 커서 메모이제이션 할수가 없다.
꼭 탑다운 방식으로 풀어야 하고, 바텀업 방식으로는 구할수 없다. 왜냐면 위의 제한 때문이다.
재귀로 탑다운 하면서 메모이제이션을 동적으로 맵으로 만들어준다. 맵으로 할때는 맵의 크기가 0이이상이면, 이렇게 하면됨.
앞에 문제랑 식이 조금 다름.
큰수를 나누면 많이 작아지고, 작은수는 작아지면 적게 작아진다. 그래서 작은수에서는 중복이 많이 일어난다. 그래서 작은 수 일때만 메모이제이션 한다.
남는포인트가 매우 중요하다. 그래야 앞으로 올릴수있는지 없는지 알수있기 때문이다.
몇개의 가로등을 껐냐 보다 어떤 가로등을 껐냐가 더 중요하다. 어떤 가로등은 두정수 LR로 표현할수있다.
이사람이 지금 어디에 있는지도 매우 중요한 정보이다.
백준 알고리즘 강의 후기(코드플러스): 기초1 - 다이나믹 프로그래밍1 (DP1)
백준 알고리즘 강의 후기(코드플러스): 중급2 - 다이나믹 프로그래밍2 (DP2)
백준 알고리즘 강의 후기(코드플러스): 중급3 - 다이나믹 프로그래밍3 (DP3)
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.