본문 바로가기

다이나믹 프로그래밍3

[Java]백준 11053번 :: 가장 긴 증가하는 부분 수열 백준 온라인 저지 11053번 - 가장 긴 증가하는 부분 수열 Java 알고리즘 문제풀이 풀이 DP(다이나믹 프로그래밍) 문제입니다. 큰 문제를 작은 단위의 문제로 생각해서 푸는 알고리즘인데, 코딩테스트에 자주 출제되는 문항입니다. 문제를 해석해보면 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구한는 문제 수열 A = {10, 20, 10, 30, 20, 50}일때 가장 긴 증가하는 수열 {10, 20, 10, 30, 20, 50} DP(다이나믹 프로그래밍)에서 중요한 것은 규칙을 찾거나, 어떤 일반식을 찾는 것이 키 포인트입니다. 먼저 A수열의 A[1], A[2]를 먼저 보면, A[1] < A[2]이므로 D[2] = D[1] + 1을 넣습니다. 이때 A[3]의 값은 A[2]보다 작고 A[1].. 2020. 4. 4.
[Java]백준 11722번 :: 가장 긴 감소하는 부분 수열 백준 11722번 :: 가장 긴 감소하는 부분 수열 백준 온라인 저지 11722번 - 가장 긴 감소하는 부분 수열 Java 알고리즘 문제풀이 풀이 DP(다이나믹 프로그래밍) 문제입니다. 큰 문제를 작은 단위의 문제로 생각해서 푸는 알고리즘인데, 코딩테스트에 자주 출제되는 문항입니다. 문제를 해석해보면 수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구한는 문제 수열 A = 일때 가장 긴 증가하는 수열 DP(다이나믹 프로그래밍)에서 중요한 것은 규칙을 찾거나, 어떤 일반식을 찾는 것이 키 포인트이다. 이제 문제를 작게 쪼개서 생각해보자 먼저 A수열의 A[1], A[2], A[3]를 먼저 보자. A[2]보다 A[3]가 작기때문에 D[2]값에 +1을 해준다. 두 번째로 A[4]를 진행한다. 이때 A[4.. 2019. 3. 15.
[Java]백준 1463번 :: 1로 만들기 백준 온라인 저지 1463번 - 1로 만들기 Java 알고리즘 문제풀이 풀이 다이나믹 프로그래밍(DP) 문제이다. 간략하게 DP를 소개하자면 큰 문제를 작은 단위로 쪼갠 작은 문제로 큰 문제의 답을 구하는 것을 뜻한다. 푸는 방식에는 2가지가 존재한다. 이 문제도 2가지 방법으로 풀어볼 것이다. 1. Top-Down 2. Bottom-Up 먼저, Top-down은 용어 그대로 위에서부터 아래로 이어지는 것이다. 이 방법에 특징은 재귀함수를 사용하는 것이다. 작은 부분의 답을 저장해 이미 계산을 진행한 작은문제는 저장된 값을 이용하는 방법이다. /* Top down */ import java.util.Scanner; public class Beak1463 { static int[] d; public sta.. 2019. 3. 10.