반응형

다이나믹프로그래밍 12

11727.2xn타일링2

문제 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. ## 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) ## 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 256 MB 68465 40719 32702 58.894% https://www.acmicpc.net/problem/11727 풀이 코드 import java.util.Scanner; public class _2xn타일링2 { static int[] dp = new int[1001]; public static void..

Algorithm🥇 2023.11.01

알고리즘 개념 - 동적 계획법(DP)

DP Algorithm "동적계획법(Dynamic Programming)이란 큰 문제를 작은 문제로 나누어 푸는 알고리즘이다." 하나의 문제를 여러개의 작은 문제로 나누어 그결과를 저장(메모이제이션)하여 다시 큰문제를 해결할때 사용하는 것이다. Dynamic Programming 이라는이름이 뭔가 동적으로 프로그래밍을 해야하나? 생각할수있는데 전혀아니다. 그냥 큰문제를 작은문제로 쪼개서 그답을 저장해두고 활용한다는것에 집중하면될것이다. (기억하며풀기 알고리즘) 이러한 DP는 분할정복 알고리즘과도 닮은 부분이 있다. 하지만 분할정복에서는 부분문제의 계산결과를 저장하는 메모이제이션을 활용하지 않는다. 이것이 DP와 분할정복의 차이이고, 계산결과를 저장해두고 활용하기 때문에 시간복잡도 면에서 DP가 유리하다...

Algorithm🥇 2023.10.24
반응형