다이나믹프로그래밍 2

백준-1149번/RGB거리 (java)

우선 각각의 집의 RGB 비용을 저장 할 이차원 배열 RGB[n][3]을 만들어준다. 그리고 RGB와 크기가 같은 이차원 배열 dp[n][3]을 만들어준다. dp문제는 조건에 따른 경우의 수를 누적해 오면서 맨 마지막 경우에 따른 뒤의 경우를 생각해봐야 한다. 3 26 40 83 49 60 57 13 89 99 이렇게 3개의 집이 있다고 생각해보자. 맨 마지막 집이 빨간색인 경우 ==> 이 전 집은 파랑OR초록이 왔을때의 최솟값 맨 마지막 집이 파란색인 경우 ==> 이 전 집은 빨강OR초록이 왔을때의 최솟값 맨 마지막 집이 초록색인 경우 ==> 이 전 집은 빨강OR파랑이 왔을때의 최솟값 이 때 전전 집(dp[n-2][?])을 생각하지 않아도 되는 이유 : 전전 집도 위 식과 똑같은 방식으로 앞 뒤 집과 ..

알고리즘/백준 2024.02.22

백준-10844번/쉬운 계단 수 (java)

문제 45656이란 수를 보자. 이 수는 인접한 모든 자리의 차이가 1이다. 이런 수를 계단 수라고 한다. N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구해보자. 0으로 시작하는 수는 계단수가 아니다. 입력 첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100보다 작거나 같은 자연수이다. 출력 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. 다이나믹 프로그래밍 문제이므로 배열을 생성 해야한다. 이 문제에서는 첫번째 자리의 숫자 뒤에 올수 있는 계단수를 구하기 위해 이차원 배열을 만들어 줘야 한다. 문제를 풀때 가장 고민을 많이 했던 부분은 0으로 시작하는 수는 아니지만 1로 시작할때는 뒤에 0으로 시작하는 계단수가 필요하다는 점 이다! 따라서 0으로 시작하는 ..

알고리즘/백준 2024.02.13