BOJ 2293. λμ 1
πββοΈ[Gold V] λμ 1 - 2293
μ±λ₯ μμ½
λ©λͺ¨λ¦¬: 2100 KB, μκ°: 0 ms
λΆλ₯
λ€μ΄λλ―Ή νλ‘κ·Έλλ°
μ μΆ μΌμ
2024λ 1μ 12μΌ 13:19:41
λ¬Έμ μ€λͺ
nκ°μ§ μ’ λ₯μ λμ μ΄ μλ€. κ°κ°μ λμ μ΄ λνλ΄λ κ°μΉλ λ€λ₯΄λ€. μ΄ λμ μ μ λΉν μ¬μ©ν΄μ, κ·Έ κ°μΉμ ν©μ΄ kμμ΄ λλλ‘ νκ³ μΆλ€. κ·Έ κ²½μ°μ μλ₯Ό ꡬνμμ€. κ°κ°μ λμ μ λͺ κ°λΌλ μ¬μ©ν μ μλ€.
μ¬μ©ν λμ μ ꡬμ±μ΄ κ°μλ°, μμλ§ λ€λ₯Έ κ²μ κ°μ κ²½μ°μ΄λ€.
μ λ ₯
첫째 μ€μ n, kκ° μ£Όμ΄μ§λ€. (1 β€ n β€ 100, 1 β€ k β€ 10,000) λ€μ nκ°μ μ€μλ κ°κ°μ λμ μ κ°μΉκ° μ£Όμ΄μ§λ€. λμ μ κ°μΉλ 100,000λ³΄λ€ μκ±°λ κ°μ μμ°μμ΄λ€.
μΆλ ₯
첫째 μ€μ κ²½μ°μ μλ₯Ό μΆλ ₯νλ€. κ²½μ°μ μλ 231λ³΄λ€ μλ€.
πνμ΄
dpλ¬Έμ μλ€.
λ μ μκ³ λ¦¬μ¦μ μμ©ν λ¬Έμ λ‘ μ νμμ΄ μ€μνλ€.
μ νμμ λ€μκ³Ό κ°λ€.
dp[j] += dp[j - arr[i]];
μ νμμ μλ―Έλ jμμ λ§λ€ μ μλ κ²½μ°μ μ μ΄λ€.
μλ₯Ό λ€μ΄ μλμ κ°μ μμ λΌλ©΄
3 10
1
2
5
κ²°κ³Όλ 10μ΄μ¬μΌνλ€.
int n, k;
int dp[20000];
vector<int> arr;
void solve()
{
cin >> n >> k;
arr = vector<int>(n);
for (int i = 0; i < n; ++i)
{
cin >> arr[i];
}
sort(arr.begin(), arr.end());
dp[0] = 1;
for (int i = 0; i < n; ++i)
{
for (int j = arr[i]; j <= k; ++j)
{
dp[j] += dp[j - arr[i]]; // μ νμ
cout << "j : " << j << " dp[" << j << "] : " << dp[j] << endl; // μ€κ° κ²°κ³Όλ₯Ό 보기 μν μ½λ
}
}
cout << dp[k];
}
μμ κ°μ΄ μμ±νκ³ λ리면 μλμ κ°μ κ²°κ³Όκ° λμ¨λ€.
λ μ μκ³ λ¦¬μ¦μ΄ μ λλ‘ μ΄ν΄λλ€λ©΄ μ½κ² μκ±°κ°μλ° λ μ‘°κΈ μ΄λ €μ λ€..
πμ 체 μ½λ
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include<iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
int n, k;
int dp[20000];
vector<int> arr;
void solve()
{
cin >> n >> k;
arr = vector<int>(n);
for (int i = 0; i < n; ++i)
{
cin >> arr[i];
}
sort(arr.begin(), arr.end());
dp[0] = 1;
for (int i = 0; i < n; ++i)
{
for (int j = arr[i]; j <= k; ++j)
{
dp[j] += dp[j - arr[i]];
cout << "j : " << j << " dp[" << j << "] : " << dp[j] << endl;
}
}
cout << dp[k];
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
freopen("input.txt", "rt", stdin);
solve();
return 0;
}