dynamic programming (4) 썸네일형 리스트형 C++ 백준 11066 (파일 합치기) 백준 11066 (파일 합치기) https://www.acmicpc.net/problem/11066 11066번: 파일 합치기 소설가인 김대전은 소설을 여러 장(chapter)으로 나누어 쓰는데, 각 장은 각각 다른 파일에 저장하곤 한다. 소설의 모든 장을 쓰고 나서는 각 장이 쓰여진 파일을 합쳐서 최종적으로 소설의 완성본 www.acmicpc.net 전형적인 DP식 문제이다. 문제들을 풀면서 느낀 점인데 뭔가 문제를 보고 딱 떠오르는 알고리즘이 없으면 구현/DP인 것 같다. 설명 2차원 DP를 선언한다. dp[i][j]는 i부터 j파일까지 합쳤을 때 최소비용이다. 그렇게 되면 d[i][i] = 파일 i의 크기가 될 것이다. 아이디어는 다음과 같다. i~j까지의 파일을 합치는데 해당 파일들이 합쳐지기 전.. C++ 백준 1562 (계단 수) 백준 1562 (계단 수) https://www.acmicpc.net/problem/1562 1562번: 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net DP와 재귀에 비트마스크 연산을 사용하여 풀 수 있는 문제이다. 때문에 이 문제를 해결하기 위해선 DP, 재귀호출, 비트마스크 연산에 대한 이해가 필요하다. 설명 계단 수의 기본적인 아이디어는 다음과 같다. 시작숫자를 특정 숫자로 고정한 뒤, 재귀호출을 통해 이어나아갈 수 있는 숫자를 붙여 입력 N의 길이가 되면 멈추는 방식이다. 그러나 이 문제는 한 가지 조건이 더 있다. 0~9까지 모든 숫자가 포함되어야 한다는 것이다. 0~9까지 모든 숫자가 있는지 없는지를 판단한다.. 있는지 없는지.. .. C++ 백준 17404 (RGB거리 2) 백준 17404 (RGB거리 2) https://www.acmicpc.net/problem/17404 17404번: RGB거리 2 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 이 문제는 백준 1149(RGB거리)의 응용버전이다. 1149번 RGB거리에 대한 설명은 여기(링크)에 있으니 DP관점의 해결방법을 알고오자. 기존 1149번(이하 RGB거리1)문제와 달리 하나의 조건이 추가되었다. 처음집과 마지막집의 색이 달라야 한다는 것이다. RGB거리1에서는 처음과 마지막은 고려하지 않았기 때문에 한번의 DP과정.. C++ 백준 1149 (RGB거리) 백준 1149 (RGB거리) https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 전형적인 DP문제이다. 설명 문제를 보면 다음단계의 집색깔은 전단계의 집색깔과 같을 수 없다. 한단계 한단계 나아가며 현재단계에서의 optimal solution은 전단계의 optimal solution과 관계가 있다. 이 말은 dynamic programming을 통해 이문제를 해결할 수 있다는 것이다. 예를 들면 현재 네번째 집의 색이 R이라면.. 이전 1 다음