DP 34

[다이나믹 프로그래밍] 이코테 (파이썬) 금광 풀이

[문제] n x m 크기의 금광이 있습니다. 금광은 1 x 1 크기의 칸으로 나누어져 있으며, 각 칸은 특정한 크기의 금이 들어 있습니다. 채굴자는 첫 번재 열부터 출발하여 금을 캐기 시작합니다. 맨 처음에는 첫 번째 열의 어느 행에서든 출발할 수 있습니다. 이후에 m번에 걸쳐서 매번 오른쪽 위, 오른쪽, 오른쪽 아래 3가지 중 하나의 위치로 이동해야 합니다. 결과적으로 채굴자가 얻을 수 있는 금의 최대 크기를 출력하는 프로그램을 작성하세요. 만약 다음과 같이 3 x 4 크기의 금광이 존재한다고 가정합시다. 1 3 3 2 2 1 4 1 0 6 4 7 가장 왼쪽 위의 위치를 (1, 1), 가장 오른쪽 아래의 위치를 (n, m)이라고 할 때, 위 예시에서는 (2, 1) -> (3, 2) -> (3, 3) -..

백준(C) 11727번 2xn 타일링2 풀이

C로 구현한 2752번 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 이 문제의 규칙성을 찾기 위해서 아래의 글을 참고하시면 좋을거 같습니다. https://unie2.tistory.com/40?category=875841 백준(C) 11726번 2xn 타일링 풀이 C로 구현한 2752번 세수정렬 구하기 문제 풀이입니다. https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형..

백준(C) 11726번 2xn 타일링 풀이

C로 구현한 2752번 세수정렬 구하기 문제 풀이입니다. https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 문제에서 n이 1일 때 1x2 혹은 2x1 타일로 채우는 방법의 수는 1가지 이다. n이 2일 때는 가로로 긴 타일 2개를 붙여서 채우는 방법 하나와 세로로 긴 타일 2개를 붙여서 채우는 방법 하나로 총 방법의 수는 2가지 이다. n이 3일 때의 방법의 수는 3이며, 만약 이미 많은 타일이 채워져 있고 2개의 타일을 추가하고자 할 때 세로로 긴 타일을 추가하는 ..

다이나믹 프로그래밍(Dynamic Programming)

다이나믹 프로그래밍은 하나의 문제는 단 한 번만 풀도록 하는 알고리즘이다. 다이나믹 프로그래밍으로 피보나치 수열의 문제 점을 해결할 수 있는데, 피보나치 수열은 특정한 숫자를 구하기 위해 특정한 숫자 바로 앞에 있는 수와 두 칸 앞에 있는 수의 합을 구하는 방식이다. 피보나치 수열은 동일한 문제를 다시 풀어 비효율적이라는 문제점이 있다. 다이나믹 프로그래밍은 큰 문제를 작은 문제로 나눌 수 있고, 작은 문제에서 구한 정답은 그것을 포함하는 큰 문제에서도 동일하다는 가정 하에 사용이 가능하다. 다이나믹 프로그래밍을 통해 피보나치 수열의 문제점을 해결하기 위해서는 이미 계산한 결과를 배열에 저장함으로써 나중에 동일한 계산을 해야할 때 저장된 값을 단순히 반환하도록 한다. [예제] #include int d[..