본문 바로가기

DP4

[백준 C++] 1562번: 계단 수 1. 문제https://www.acmicpc.net/problem/1562 2. 알고리즘 분류다이나믹 프로그래밍비트마스킹비트필드를 이용한 다이나믹 프로그래밍 3. 소스 코드#include #define MOD_NUM 10e8using namespace std;long long dp[1 > N; /* * 다이나믹 프로그래밍 * dp[존재하는 숫자 bit 표시][총 자릿수][마지막 자리의 숫자] = 해당 조건의 경우의 수 * * ex) 존재하는 숫자 bit 표시 * 이진수로 표현했을 때, i번째 자릿 수의 값이 1이라면, (i - 1) 숫자가 존재한다는 의미. * 502이면, 해당 숫자는 0, 2, 5라는 숫자가 있으므로 0000100101(2) 로 표현된다. * * 행 : 마지막 자리의 숫자 / 열 .. 2024. 5. 6.
[알고리즘] 다이나믹 프로그래밍(DP, Dynamic Programming) 1. 문제https://www.acmicpc.net/problem/1509 2024. 5. 4.
[백준 C++] 1509번: 팰린드롬 분할 1. 문제https://www.acmicpc.net/problem/1509 2. 알고리즘 분류다이나믹 프로그래밍 3. 소스코드#include #include #include #define MAX_LEN 2501#define INF 2134567890using namespace std;bool dp[MAX_LEN][MAX_LEN];string str;int str_len, result[MAX_LEN];// 팰린드롬인지 확인하는 알고리즘bool is_palindrome(int start, int end) { // end 값이 문자열 길이를 넘어갔을 경우, False if (end > str_len) return false; // 시작 문자열과 끝 문자열이 같고, 시작점과 끝점 문자열을 제외했을 때, 그 문.. 2024. 5. 4.
[백준 C++] 7579번: 앱 1. 문제 https://www.acmicpc.net/problem/7579 7579번: 앱 입력은 3줄로 이루어져 있다. 첫 줄에는 정수 N과 M이 공백문자로 구분되어 주어지며, 둘째 줄과 셋째 줄에는 각각 N개의 정수가 공백문자로 구분되어 주어진다. 둘째 줄의 N개의 정수는 현재 활 www.acmicpc.net 2. 알고리즘 분류 다이나믹 프로그래밍 배낭 문제 3. 소스 코드 #include #include using namespace std; int memory_table[101]; int cost_table[101]; int dp[101][10001]; int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); // N : 앱의.. 2023. 12. 3.