DP 36

백준 2579번 : 계단 오르기 자바

🧫 문제 분석✔️ 출처계단 오르기 실버 3 📖 문제 dp 문제로나올 수 있는 경우는 1.  2칸을 점프해서 도달2.  2칸 점프 + 한칸 앞으로 인 경우 뿐이다.  따라서  // 2칸 점프 도달 2칸 점프 후 한칸 앞으로 dp[i] = Math.max(dp[i-2] + stairs[i], dp[i-3] + stairs[i-1] + stairs[i]) 🔅 문제 풀이import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStre..

baekjoon/DP 2024.08.15

백준 1436번 : 1로 만들기 자바

🧫 문제 분석✔️ 출처1로 만들기 실버 3 📖 문제 3으로 나눴을 때 2로 나눴을 때 1을 뺐을 때   3가지 경우 중 더 작은 값을 찾으면 된다.  6을 예시로 보면6 / 3 의 최솟값 dp[6 / 3] + 1,6 / 2 의 최솟값 dp[6 / 2] + 1,6 - 1 의 최솟값 dp[6 - 1] + 1dp[2] = 1, dp[3] = 1, dp[5] = 3+1을 해주는 이유는 6에 대해 연산을 해주었기때문이다.  따라서 dp[6] = 2이다.   🔅 문제 풀이import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new Buff..

baekjoon/DP 2024.08.15

백준 2156번 : 포도주 시식 자바

🧫 문제 분석 ✔️ 출처포도주 시식 실버 1 📖 문제 동적 프로그래밍 문제이다.  문제를 보면1. 선택한 잔은 모두 마시고 원위치2. 연속으로 3잔 마시기 불가능 i = 3 부터 시작 1. 현재 잔 + dp[i - 2]2. 현재 잔 + 이전 잔 + dp[i - 3]3. dp[i - 1]    // 이전까지의 최댓값을 가진다.  이 세가지 중 max값을 찾으면 된다.    1. 현재 잔 + dp[i - 2]2잔을 마시고 한 칸 뛰고 한 잔을 마신 경우이다.  1 2 3 번째 잔을 연속해서 마실 수 없으므로 dp[1]의 값 즉, 0과 1 번째 잔을 마신 최댓값 을 더한다.  2. 현재 잔 + 이전 잔 + dp[i - 3] 한 잔을 마시고 한 칸 뛰고 연속으로 2잔을 마신 경우이다.dp[0] 잔까지 마시고..

baekjoon/DP 2024.08.07

백준 2193번 : 이진수 자바

🧫 문제 분석✔️ 출처이진수 실버 3 📖 문제  내가 이해한 바로는    이런느낌이다.3번째를 만들어준 2번째의 수의 경우와 2번째를 만들어준 1첫째 수의 경우의 합이라는 느낌이다.  🔅 문제 풀이import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.IOException;public class Main { public static long[] dp; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ..

baekjoon/DP 2024.07.10

백준 9095번 : 1, 2, 3 더하기 자바

🧫 문제 분석✔️ 출처1, 2, 3 더하기 실버 3 📖 문제  DP(동적계획법) 문제이다. 우선 1 과 2 그리고 3을 구하는 경우의 수를 봐보자 1 1 21 + 1231 + 1 + 12 + 11 + 23 문제에서 예시로 4를 구하는 방법이 나와있다. 4를 구하는 방법은 크게 보면1 + 3 2 + 23 + 1 이 세가지 경우라고 볼 수 있다. 우리는 1, 2, 3을 통해서 방법의 수를 구하기에 1을 고정해놓고 3을 구하는 경우의 수2를 고정해놓고 2를 구하는 경우의 수3을 고정해놓고 1을 구하는 경우의 수이 세가지의 합이 4를 구하는 경우의 수라고 볼 수 있다. 표로 보자면 이렇게 볼 수 있다.고정경우의 수1 + 1 + 1 + 11 + 22 + 132 + 1 + 123 + 1  🔅 문제 풀이impo..

baekjoon/DP 2024.07.06

백준 11726 자바 2xn 타일링

백준 11726번 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 문제 풀이 import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(Sys..

baekjoon/DP 2023.11.07