728x90 반응형 Dynamic Programming11 [백준/Python] 2839 설탕 배달 문제: https://www.acmicpc.net/problem/2839 사용 알고리즘: DP 상근이가 설탕을 정확하게 N kg 배달해야 한다. 이 때 설탕은 3kg, 5kg 두 가지 봉지에 담겨져 있다. 상근이가 설탕을 정확하게 N kg 배달해야할 때 최소 봉지의 개수를 구하는 프로그램 구현 입력N (3 출력상근이가 배달하는 봉지의 최소 개수 출력, 만약 정확하게 N kg 을 맞출 수 없다면 -1 출력 - 인덱스 1부터 사용할 것이기 때문에 dp 배열의 길이를 (n+1) 로 만들고, 기본 값을 -1 로 초기화- n 의 값이 5 이상인 경우와 아닌 경우를 나누어 초기화 시킴 (n 이 3, 4 인 경우 dp[5] 를 먼저 초기화 시키면 인덱스 에러남)# 입력받기n = int(input())# dp .. 2024. 7. 4. [백준/Python] 11055 가장 큰 증가하는 부분 수열 문제: https://www.acmicpc.net/problem/11055 사용 알고리즘: DP 수열 A 가 주어졌을 때, 수열의 증가하는 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램 구현ex) A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} -> 1, 2, 50, 60 합 113 입력첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)둘째 줄에는 수열 A를 이루고 있는 Ai(1 ≤ Ai ≤ 1,000) dp[i] -> 수열 A 의 0 번째 인덱스부터 i 번째 인덱스까지의 부분 합 중 가장 큰 부분 합 i 는 현재 위치, j 는 처음~현재 위치까지 수들을 비교하기 위한 인덱스 현재 위치를 고정시켜놓고 현재 위치까지 수열을 돌면서 현재 위치 값과 방문한 수열의 .. 2024. 7. 3. [백준/Python] 11722 가장 긴 감소하는 부분 수열 문제: https://www.acmicpc.net/problem/11722 사용 알고리즘: DP 수열 A 가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 문제 ex) A = {10, 30, 10, 20, ,20, 10} -> 30, 20, 10 입력수열 A 의 크기 N (1 수열 Ai (1 여기서 중요한 것은 부분 수열이 연속적일 필요가 없다는 것!-> 이중 for 문을 돌면서 현재 위치의 수와 (처음~현재 위치) 까지의 수들을 비교해서 현재 위치에서 가장 긴 감소하는 배열의 길이를 찾기 i 는 현재 위치, j 는 처음~현재 위치까지 수들을 비교하기 위한 인덱스 현재 위치를 고정시켜놓고 현재 위치까지 수열을 돌면서 현재 위치와 방문한 수열의 값을 비교for i in range(n): .. 2024. 7. 2. [백준/Python] 11726 2*n 타일링 문제: https://www.acmicpc.net/problem/11726 사용 알고리즘: DP 2 * n 크기의 직사각형을 1 * 2, 2 * 1 타일로 채우는 방법의 수를 구하는 문제 -> 전형적인 DP 문제 주어진 직사각형을 채우기 위한 방법의 수를 구하기 위해 도미노를 쪼개어 생각해보자. 1 * 2 / 2 * 1 의 두 가지 타일로 주어진 직사각형의 가장 오른쪽 부분을 채우는 방법을 생각해보면 아래와 같이 2가지 방법이 있다. -> dp[n] = dp[n-1] + dp[n-2] # 입력n = int(input())# dp 초기화, 인덱스 1 부터 사용할 것이기 때문에 1001 칸을 만들어줌dp = [0] * 1001dp[1] = 1dp[2] = 2for i in range(3, n+1):.. 2024. 7. 2. 이전 1 2 3 다음 728x90 반응형