[λ°±μ€(BOJ)] μ κ³±μμ ν©(1699) C++
λ¬Έμ : BOJ_1699λ² μ κ³±μμ ν©
λ¬Έμ μ€λͺ
DP
DPλ‘ ν μ μλ κΈ°λ³Έλ¬Έμ λμ 2
μ μ μ¬ν μ κ³±μμ ν©
λ¬Έμ μ
λλ€.
1λΆν° 10λ§κΉμ§μ μ μ€ νλκ° μ£Όμ΄μ‘μ λ, κ·Έ μλ₯Ό μ κ³±μλ‘ ννν μ μλ μ΅μν κ°μλ₯Ό ꡬνλ λ¬Έμ μ
λλ€.
μλ₯Ό λ€μ΄, 11μ κ²½μ°μ 11 = 2^2 + 2^2 + 1^2 + 1^2 + 1^2
5κ° νλ κ°λ₯ν©λλ€.
νμ§λ§, 11 = 3^2 + 1^2 + 1^2
μ 3κ°νμΌλ‘λ ννμ΄ κ°λ₯νλ―λ‘ 11μ΄ μ£Όμ΄μ§λ©΄ 3μ μΆλ ₯ν΄μΌ ν©λλ€.
Solution
νμ κ°μλ₯Ό μ΅μνμΌλ‘ μ°κΈ° μν΄ μ²μ νλ μκ°μ, λ¨μνκ² μ£Όμ΄μ§ μμ μ΅λν κ°κΉμ΄ μ κ³±μλ₯Ό ꡬνλ κ²μ΄μμ΅λλ€.
μλ₯Ό λ€μ΄, 145λ©΄ 12^2, 100μ΄λ©΄ 9^2κ³Ό κ°μ΄ κ°μ₯ κ°κΉμ΄ μλ₯Ό μ°Ύμ λ€,
dp[μ£Όμ΄μ§ μ] = dp[κ°κΉμ΄ μ] - dp[μ£Όμ΄μ§ μ - κ°κΉμ΄ μ]
λ‘ ν΄κ²°νλ € νμ§λ§, 무쑰건 κ°κΉμ΄ μλ§ μ°λ©΄ μ€νλ € νμ μκ° λμ΄λλ λ°λ‘κ° μμκΈ° λλ¬Έμ μ΄ λ°©λ²μ νλ Έμ΅λλ€.
κ²°κ΅ λ¬Έμ λ μ κ³±μλ€λ§ μ΄μ©ν΄μ dpλ₯Ό λλ €μΌ νλ κ² ν΅μ¬μΈλ°, μ΄λ μ£Όμ΄μ§ μμ κ°μ₯ κ°κΉμ΄ μ κ³±μλ§ λ리λ κ²μ΄ μλ μ£Όμ΄μ§ μ λ³΄λ€ μμ μ κ³±μλΌλ©΄ κ³μ μ΅μκ°μ νμΈν΄ μ£Όλ κ² λ°©λ²μ λλ€.
λν, dp κ°μ νμΈν΄μΌ νλ μκ° μ κ³±μλΌλ©΄ dp[νμΈν΄μΌ νλ μ] = 1;
λ‘ κ°±μ ν΄ μ£Όμ΄μΌ ν©λλ€.
for λ¬ΈμΌλ‘ 1λΆν° ꡬν΄μΌ νλ κ°λ³΄λ€ μμ μ κ³±μμ κ°κΉμ§
dp[κ°] = min(dp[κ°], (dp[κ° - μ κ³±μμ κ°] + dp[μ κ³±μμ κ°]));
μΌλ‘ ν΄λΉ κ°μ μ΅μκ°μ κ³μ κ°±μ ν΄ μ€λλ€.
Description
- μ΅μκ°μ κ°±μ νκΈ° μ λͺ¨λ INF κ°μΌλ‘ dp κ°μ μ΄κΈ°νν΄μ€λλ€.
- Nμ΄ μ΅λ 100,000μ΄λ―λ‘, 100,001μ
INF
λ‘ μ νμ΅λλ€. sqrt()
λ₯Ό μ΄μ©ν΄μ ν΄λΉ κ°μ΄ μ κ³±μμΈμ§λ₯Ό νμΈν΄ μ£Όκ³ μ κ³±μ λ°°μ΄μ λ£μ΄μ£Όμμ΅λλ€.
#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
#define INF 100001
using namespace std;
int main(void) {
int N;
cin >> N;
vector<int> dp(N + 1);
for (int i = 0; i <= N; i++) dp[i] = INF;
vector<int> value;
for (int i = 1; i * i < N; i++) {
value.push_back(i * i);
}
dp[1] = 1;
int size = value.size();
for (int i = 2; i <= N; i++) {
int chk = sqrt(i);
if (chk * chk == i) {
dp[i] = 1;
continue;
}
for (int j = 0; j < size; j++) {
if (value[j] > i) break;
dp[i] = min(dp[i], dp[i - value[j]] + dp[value[j]]);
}
}
cout << dp[N] << '\n';
return 0;
}
'Algorithm > BOJ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ] νμ νλ ν(1021) (0) | 2022.03.10 |
---|---|
[BOJ] μ€λ₯΄λ§ μ(11057) (0) | 2022.03.09 |
[BOJ] λμ 2(2294) (0) | 2022.03.09 |
[BOJ] 2xn νμΌλ§(11726) (0) | 2022.03.09 |
[BOJ] μ©λ λΆμ‘±(5446) (0) | 2022.03.08 |