본문 바로가기

728x90

dynamic programming

[C++]백준 1463번: 1로 만들기 문제 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 문제이해 첫째 줄에 N을 입력합니다. 연산 횟수의 최솟값을 출력합니다. 이 문제는 다이나믹 프로그래밍을 이용해야 합니다. 배열을 통해 설명해 보겠습니다. dp [i]는 i를 1로 만드는데 걸리는 연산 횟수의 최솟값을 의미합니다. dp [2]와 dp [3]은 당연히 1입니다. dp [4]의 경우 dp [2]에 1을 더한 값 또는 dp [3]에 1을 더한 값인 2입니다. dp [5]는 5 - 1 = 4, 4 - 1 = 3, 3 / 3 = 1 또는 5 - 1 = 4, 4 / 2 = 2, 2 / 2 = 1 이러한.. 더보기
[C++]백준 11727번: 2xn 타일링 2 문제 https://www.acmicpc.net/problem/11727 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net 문제이해 째 줄에 n을 입력합니다. 2xn 크기의 직사각형을 채우는 방법을 10007로 나눈 값을 출력합니다. 이 문제는 다이나믹 프로그래밍을 사용하는 문제입니다. 사용할 수 있는 블록은 2x1로 된 가로블록, 1x2로 된 세로 블록, 2x2로 된 정사각형 블록으로 총 3개가 있습니다. 점화식을 찾기 위해 우선 배열을 통해 설명해 보겠습니다. 2xi 크기의 직사각형을 채우는 방법을 의미합니다. dp [1]은 세로블록 한 .. 더보기
[C++]백준 11726번: 2xn 타일링 문제 https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 문제이해 첫째 줄에 n을 입력합니다. 정답이 되는 방법의 수를 10007로 나눈 나머지를 출력합니다. 이 문제는 다이나믹 프로그래밍을 사용해야합니다. 방법의 수를 찾기 위해서는 우선 점화식부터 찾아야합니다. 이를 배열로써 설명해보겠습니다. dp[i]는 2xi 크기의 직사각형을 채우는 방법의 수를 의미합니다. dp[1]은 1, dp[2]는 2, dp[3]은 3이라고 할 수 있습니다. 그렇다면 dp[4]의 값은 얼마.. 더보기

LIST