목록dp (3)
DNF LOVE
DP의 대표격인 피보나치 알고리즘. 이를 구현하는 데에는 다양한 방법이 존재한다. 그 중 몇가지를 소개하고자 한다. 1. 재귀함수 import java.util.*; import java.io.*; public class fibo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); System.out.println(fibo(num)); } public static int fibo(int n) { if(n

DP알고리즘의 또 다른 문제 2xn타일 구하기 문제이다. 이 문제도 어제 풀었던 1, 2, 3 더하기와 똑같은 원리로 이루어져 있다. 우선, 타일은 2x1 과 1x2 이 두가지가 주어진다. 그러다면 우리가 바로 알 수 있는 경우의 수는 1일떄와 2일때이다. tile[1] 일때, 2x1 하나밖에 쓰이지 못하니 경우의 수는 1이다. 또, tile[2] 일때, 2x1 타일을 두개 겹친 것과 1x2 타일을 가로로 두 개 겹친 것해서 경우의 수는 2가지가 나온다. 그렇다면 3일때는 어떨까? 2x1타일을 앞에 세울 때, 2가지 경우와 1x2타일을 두개로 겹쳐서 2x2로 만들때 1가지 경우의 수를 더하면 3가지의 경우의 가지가 나온다. 그렇다. 2x1타일을 맨 앞에 세웠을 때의 경우의 수와 1x2타일을 가로로 겹쳐 ..

백준 9095번 DP의 기본 문제 1, 2, 3번 더하기 문제를 풀어봤다. 게임 개발을 해봤으면서 주 언어가 JAVA인 나는 자바로 풀이를 하겠다. 이 문제의 원리는 매우 간단하다. 이 문제는 하나의 자연수를 1, 2, 3 으로만 조합하여 더해서 해당 자연수가 나오는 경우의 수를 구하는 문제이다. 그렇다면 먼저 1, 2, 3의 경우의 수를 찾아 봐야 한다. d[0]은 0 d[1] = 1밖에 없으니 경우의 수는 1 d[2] = (1 + 1), (2) 즉 경우의 수는 2 d[3] = (1 + 1 + 1), (1 + 2), (2 + 1), (3) 즉 경우의 수는 3 이렇게 되어 있을 때 d[4]는 (1+1+1+1), (1+1+2), (1+2+1), (2+1+1), (2+2), (1+3), (3+1) 으로 7개..