백준온라인23 (JAVA) 백준온라인 16194번 - 카드 구매하기 2 저번 문제와는 반대로 최소 비용을 구하는 문제이다!! 여기서는 최솟값 초기화를 해줘야한다 왜냐하면 배열을 처음 선언할 때는 0으로 초기화가 되기 때문이다! import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] p = new int[n + 1]; int[] dp = new int[n + 1]; for (int i = 1; i 2023. 9. 12. (JAVA) 백준온라인 11052번 - 카드 구매하기 DP문제는 역시 점화식을 잘 세우는게 관건인 것 같다 근데 난 그걸 못한다.. ㅜㅠ 해보다가 잘 안되어서 결국 힌트를 얻고 코드도 보면서 풀었다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] p = new int[n + 1]; int[] dp = new int[n + 1]; for (int i = 1; i 2023. 9. 12. (JAVA) 백준온라인 9095번 - 1, 2, 3 더하기 쉬운 문제라고는 하지만 무척 많이 애쓰고 이번에는 풀이 방법에서만 힌트를 얻고 정답 코드는 보지 않았다! 근접하게 갈 뻔 했으나 역시 틀려서 정답 코드를 봤다 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] dp = new int[11]; dp[0] = 0; dp[1] = 1; dp[2] = 2; dp[3] = 4; for (int i = 0; i < n; i++) { int num = sc.nextInt(); for (int j = 4; j 2023. 9. 11. (JAVA) 백준온라인 11727번 - 2xn 타일링 2 이 문제는 이전 문제인 2xn 타일링에서 더 발전 시키면 된다 2x2 타일까지 생겼으니 점화식은 dp[i-1] + 2 * dp[i - 2] import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] dp = new int[1001]; dp[1] = 1; dp[2] = 3; for(int i=3; i 2023. 9. 10. (JAVA) 백준온라인 11726번 - 2xn 타일링 이 문제의 경우는,,,, 2x1 타일을 세로로 세워서 채우는 경우는 n - 1이라고 한다 그리고 가로로 눕혀서 채우는 경우는 n - 2이다 점화식은 dp[i-1] + dp[i - 2] 으로 나오는 것이다 코드는 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] dp = new int[1001]; dp[1] = 1; dp[2] = 3; for(int i=3; i 2023. 9. 10. (JAVA)백준온라인 1463번 - 1로 만들기 아 어렵다 구글링 하면서 계속 반복 연습 하는 수 밖에 없는 것 같다 ㅠㅠ import java.util.Scanner; public class Main { static int[] dp; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); dp = new int[n+1]; dp[1] = 0; for(int i = 2; i dp[i/2] + 1){ dp[i] = dp[i/2] + 1; } if( i % 3 == 0 && dp[i] > dp[i/3] + 1){ dp[i] = .. 2023. 9. 9. 이전 1 2 3 4 다음