목록분류 전체보기 (85)
-
1로 만들기 1463https://www.acmicpc.net/problem/1463 [풀이방법]dp[i] = i를 1로 만드는 최소 연산 수 dp[i] = min(dp[i-1], dp[i/2], dp[i/3])+1 모든 연산을 마친 후 dp[i]를 출력하면 답! 123456789101112131415161718192021222324252627282930313233import java.util.Scanner;/* * X가 3으로 나누어 떨어지면, 3으로 나눔. * X가 2로 나누어 떨어지면, 2로 * 1을 뺀다. * 범위 : 1 2 -> 1이렇게 4번이 걸린다.
RGB거리 1149https://www.acmicpc.net/problem/1149 [풀이방법]dp[0][i] = i번째에 R을 칠할 때 까지 든 최소비용dp[1][i] = i번째에 G을 칠할 때 까지 든 최소비용dp[2][i] = i번째에 B을 칠할 때 까지 든 최소비용이라고 할 때 dp[0][i] = min(dp[1][i-1], dp[2][i-1])+i번째 R을 칠할때 드는 비용dp[1][i] = min(dp[0][i-1], dp[2][i-1])+i번째 G을 칠할때 드는 비용dp[2][i] = min(dp[1][i-1], dp[0][i-1])+i번째 B을 칠할때 드는 비용 dp[0][i], dp[1][i], dp[2][i] 중 최솟값을 출력하면 된다. 123456789101112131415161718..
피보나치 함수 1003https://www.acmicpc.net/problem/1003 [문제 요약]숫자 n이 주어지고, f(n)을 n번째 피보나치 수라고 할 때, f(n)을 구하기 위해 f(0)과 f(1)이 몇 번 호출됐는지 구하기 입력과 출력 형식은 이렇다. 문제 분류는 DP로 되어있지만 그냥 재귀로 풀어도 시간초과 나지 않고 풀린다... 12345678910111213141516171819202122232425262728import java.io.*; public class Main { static int n1=0; static int n0=0; public static void main(String[] args) throws Exception { // TODO Auto-generated metho..