Open wooyn730 opened 6 months ago
Dynamic Programming, 동적 계획법
기본적인 아이디어로 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하여 다시 큰 문제를 해결할 때 사용하는 것 특정한 알고리즘이 아닌 하나의 문제해결 패러다임?
큰 문제를 작은 문제로 쪼개서 그 답을 저장해두고 재활용 ('기억하며 풀기'라고도 함)
일반적인 재귀(Naive Recursion) 방식 또한 DP와 유사함. 큰 차이점은 일반적인 재귀를 단순히 사용 시 동일한 작은 문제들이 여러 번 반복 되어 비효율적인 계산이 될 수 있다는 것이다.
DP가 적용되기 위해서는 2가지 조건을 만족해야 한다.
1) Overlapping Subproblems (겹치는 부분 문제) => 동일한 작은 문제들이 반복하여 나타나야 함 2) Optimal Substructure (최적 부분 구조) => 부분 문제의 최적 결과 값을 사용해 전체 문제의 최적 결과를 낼 수 있는 경우
출처
번호: 1149 사이트: 백준 난이도: 실버1
풀이를 참고했다.. 처음엔 재귀로 접근했는데 시간초과가 났다 DP의 필요성을 깨달았다.
번호: 11727 사이트: 백준 난이도: 실버3
비슷한 문제를 풀어서 가물가물 기억났는데 점화식 찾는게 어려워서 결국 풀이를 참고했다. DP 정복하면서 점화식 찾아내는 연습을 열심히 해야 할 듯..
번호: 1912 사이트: 백준 난이도: 실버2
풀이 참고 아직은 DP가 너무너무 낯설다 풀이를 참고하더라도 남은 3월 동안 DP에 익숙해지는 것이 좋을 듯
번호: 11053 사이트: 백준 난이도: 실버2
아이디어를 참고했다 (코드는 ㄴㄴ) 익숙해지는 과정이겠지~
번호: 11052 사이트: 백준 난이도: 실버1
결국 또 풀이참고... 점화식 떠올리는 게 너무 어렵다 DP를 하기 싫으니 PS도 싫어진다
DP랑 안맞나? 강의 영상을 좀 봐야겠다
번호: 2156 사이트: 백준 난이도: 실버1
이번에도 어려워서 풀이를 참고했다. 근데 이번에는 뭔가 깨달은 느낌?
이번 문제에서의 포인트는 마지막 3잔 중 무엇을 마시지 않느냐고 xoo oxo oox로 표현할 수 있다.
xoo oxo oox
이는 식에서 Oxoo Oxo Ox로 표현했다. 안먹는 잔의 전 잔을 마셨을 때의 최댓값을 가져와야 하는 것이다. O는 해당 위치에서의 최대 값이고, o는 해당 와인의 양이다.
Oxoo Oxo Ox
사람의 논리적인 1번 표현을 구현에 사용하는 2번 표현으로 바꾸는 것을 떠올리는 게 포인트 같다.
번호: 10844 사이트: 백준 난이도: 실버1
설명 참고 + 풀이 쪼끔 참고.. 점화식이 다양하고 아이디어를 요구해서 다른 알고리즘보다 어려운듯 DP 어렵따
문제
가장 긴 증가하는 부분 수열에 이은
LCS, 최장 공통 부분 수열 LIS(Longest Increasing Sequence)
가장 긴 증가부분수열 참고함..
번호: 11048 사이트: 백준 난이도: 실버2
한 번에 풀었다 v^_^v 쉬운 문제였는지 조금 익숙해졌는지 모르겠다
번호: 11057 사이트: 백준 난이도: 실버1
스스로의 힘으로 풀었다!! 오예 v^_^v
번호: 17626 사이트: 백준 난이도: 실버3
쫄았는데 실3이라 쉽다
번호: 2503 사이트: 백준 난이도: 실버3
낮은 난이도의 문제였는데 처음에 DP가 아닌 인간이 숫자야구를 하는 방식으로 잘못 접근해서 조금 헤맸다 ㅠ
DP 정복
Dynamic Programming, 동적 계획법
정의
기본적인 아이디어로 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하여 다시 큰 문제를 해결할 때 사용하는 것 특정한 알고리즘이 아닌 하나의 문제해결 패러다임?
큰 문제를 작은 문제로 쪼개서 그 답을 저장해두고 재활용 ('기억하며 풀기'라고도 함)
쓰는 이유
일반적인 재귀(Naive Recursion) 방식 또한 DP와 유사함. 큰 차이점은 일반적인 재귀를 단순히 사용 시 동일한 작은 문제들이 여러 번 반복 되어 비효율적인 계산이 될 수 있다는 것이다.
사용 조건
DP가 적용되기 위해서는 2가지 조건을 만족해야 한다.
1) Overlapping Subproblems (겹치는 부분 문제) => 동일한 작은 문제들이 반복하여 나타나야 함 2) Optimal Substructure (최적 부분 구조) => 부분 문제의 최적 결과 값을 사용해 전체 문제의 최적 결과를 낼 수 있는 경우
출처
장단점
[백준] DP 필수 문제