티스토리 뷰
지금까지 다이나믹 프로그래밍 문제를 풀면서 파악한 것으로
배열은 입력받는 배열, 정답을 담을 dp배열 이렇게 두가지를 선언하고
dp배열에 최대값 또는 최소값 등 구하는 값을 넣어 마지막에 dp[n]을 출력하는 공통점이 있었다.
접근할 때 생각할 것들을 정리하면
- 구하는 값 - dp에 들어갈 값 즉, 그 문제의 정답
- 내 경우에는 dp배열에 들어가는 값이 무엇인지 문제를 풀면서 도중에 길을 잃을 때가 있었다. 입력받은 배열과 dp배열을 정확하게 구분하자 - 문제의 조건
- 조건을 정리하는 것은 문제를 이해하는 방법중 하나인데 때로는 조건을 놓쳐서 틀린 경우가 있었다. - 문제 접근방법
- 타일채우기 등 타일의 모양에 따라 달라지는 방법의 수를 구하는 문제는 그림으로 접근
- 이친수 등의 문제는 케이스마다 표로 정리하면 점화식 규칙이 눈에 보였다. 이렇게 푸는 문제가 꽤 있었던 것 같다.
- 스티커(9465), 포도주 문제(2156), 카드 구매하기(11052) 등 i번째 항과 그 전에 있던 항을 비교하여 큰 값 또는 작은 값을 넣어주어서 푸는 문제가 있다. 이 문제는 하나씩 대입해서 푸는 것으로는 잘 파악이 되지 않는 것 같다. 그 전에 있는 dp[] 배열에 있는 것과 입력받은 것을 연산해서 그 값이 dp[i]번째 항과 비교해 큰 값인지 작은 값인지 판단하여 대입한다.
'algorithm' 카테고리의 다른 글
2751 - 수 정렬하기 2 (0) | 2020.05.11 |
---|---|
[DP] 11052 카드 구매하기 (0) | 2020.05.05 |
[DP] 2011 (0) | 2020.05.05 |
[DP] 9461 파도반수열 (0) | 2020.05.01 |
[DP] 2133 3*n 타일링문제 (0) | 2020.05.01 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 재귀함수
- Stack
- C
- 교착상태
- C++
- 동적프로그래밍
- 최단경로
- javascript
- 세마포어
- 알고리즘
- 자료구조
- 소프트웨어
- Java
- 병행프로세스
- 클래스
- 입출력장치
- 스텍
- 구조체
- 인접행렬
- 이진탐색
- 인접리스트
- stackframe
- 퀵정렬
- 배열
- dfs
- client side rendering
- server side rendering
- BFS
- 운영체제
- react
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함