π λ¬Έμ
μλμ κ°μ΄ 5μ μ¬μΉμ°μ°λ§μΌλ‘ 12λ₯Ό ννν μ μμ΅λλ€.
12 = 5 + 5 + (5 / 5) + (5 / 5)
12 = 55 / 5 + 5 / 5
12 = (55 + 5) / 5
5λ₯Ό μ¬μ©ν νμλ κ°κ° 6,5,4 μ
λλ€. κ·Έλ¦¬κ³ μ΄μ€ κ°μ₯ μμ κ²½μ°λ 4μ
λλ€.
μ΄μ²λΌ μ«μ Nκ³Ό numberκ° μ£Όμ΄μ§ λ, Nκ³Ό μ¬μΉμ°μ°λ§ μ¬μ©ν΄μ νν ν μ μλ λ°©λ² μ€ N μ¬μ©νμμ μ΅μκ°μ return νλλ‘ solution ν¨μλ₯Ό μμ±νμΈμ.
μ νμ¬ν
- Nμ 1 μ΄μ 9 μ΄νμ λλ€.
- numberλ 1 μ΄μ 32,000 μ΄νμ λλ€.
- μμμλ κ΄νΈμ μ¬μΉμ°μ°λ§ κ°λ₯νλ©° λλκΈ° μ°μ°μμ λλ¨Έμ§λ 무μν©λλ€.
- μ΅μκ°μ΄ 8λ³΄λ€ ν¬λ©΄ -1μ return ν©λλ€.
μ μΆλ ₯ μ
5 | 12 | 4 |
2 | 11 | 3 |
βοΈ νμ΄
μ νμ μΈ DPλ¬Έμ λΌκ³ μκ°νλ€.
λ¨Όμ λ°°μ΄(canMakeNum)μ νλ μ μΈνλ€. μ΄ λ°°μ΄μ΄ μλ―Ένλ κ²μ μΈλ±μ€λ μ¬μ©νλ μ«μμ κ°μμ΄κ³ , κ° μμλ Set μλ£κ΅¬μ‘°λ‘ λμ΄ μμ΄ λ§λ€ μ μλ μλ₯Ό μλ―Ένλ€. μ²μ μ΄κΈ°νν λ μ«μλ₯Ό μ΄μ΄λΆμΈ μ(λ§μ½ μ«μκ° 1, μ¬μ©ν κ°μκ° 2λΌλ©΄ 11)λ₯Ό ν λΉν΄μ€¬λ€. κΈΈμ΄λ 9μΈλ° μ¬μ©ν μ«μκ° 8κ°λ₯Ό λμ΄κ°λ©΄ -1μ 리ν΄νλΌλ μ‘°κ±΄μ΄ μμκΈ° λλ¬Έμ΄λ€.
1λΆν° 8κΉμ§ λ°λ³΅λ¬Έμ μννλ€. μ΄λ μ¬μ©ν μ«μμ κ°μλ₯Ό μλ―Ένκ³ λ΄ λ‘μ§μ λ§λ€ μ μλ μ«μλ€μ λͺ¨λ λ§λ€μ΄ Setμ λ£μ΄μ£Όκ³ κ·Έ μμ λͺ©νλ‘ νλ μ«μκ° μλμ§ νμΈνλ€. μ΄ λ κ³μ°λ²μ λ€μκ³Ό κ°λ€.
- 2λΌλ μ«μλ₯Ό 1λ² μ¬μ©νμ λ: {2}
- 2λΌλ μ«μλ₯Ό 2λ² μ¬μ©νμ λ: {22, 4(2+2), 0(2-2), 1(2/2), 4(2*2)} -> {22, 4, 0, 1}
μΌ λ μ«μλ₯Ό 3λ² μ¬μ©ν΄μ λ§λ€ μ μλ μ«μλ 1λ² μ¬μ©νμ λμ 2λ² μ¬μ©νμ λμ μμλ€μ μλ‘ μ¬μΉμ°μ°ν΄μ£Όλ©΄ λλ€.
- 222
- 22+2, 22-2, 22/2, 22*2
- 4+2, 4-2, 4/2, 4*2
- 0+2, 0-2, 0/2, 2*2
- 1+2, 1-2, 1/2, 1*2
μμλλ‘ λμ΄νλ©΄ {222, 24, 20, 11, 44, 6, 2, 2, 8, 2, -2, 0, 4, 3, -1, 0.5, 2} κ° λλλ° μ¬κΈ°μ μ€λ³΅μ μ κ±°νκ³ , λλμ μ λͺ«λ§ μ¬μ©νλ©΄ {222, 24, 20, 11, 44, 6, 2, 8, -2, 0, 3}κ° λλ€.
μ΄ λ μ£Όμν΄μΌ νλ κ²μ μμ κ³μ°λ€μ (2λ² μ¬μ©νμ λμ μ«μ) μ¬μΉμ°μ° (1λ² μ¬μ©νμ λμ μ«μ)λ‘ 2λ² μ¬μ©νμ λμ μ«μλ€μ΄ μμ λμ€λλ° λλμ μ΄λ λΊμ μ μ«μμ μν₯μ λ°κΈ° λλ¬Έμ λ°λμ κ³Όμ μ μ§νν΄μ€μΌ νλ€. νμ¬μ μμμμλ μμΈκ° μμΌλ, λ€λ₯Έ μμμλ λ€λ₯Ό μ μλ€.
- 2+22, 2-22, 2/22, 2*22
- 2+4, 2-4, 2/4, 2*4
- 2+0, 2-0, 2/0, 2*0
- 2+1, 2-1, 2/1, 2*2
λ§μ½ 4λ² μ¬μ©ν μ«μλ₯Ό κ³μ°νκΈ° μν΄μλ λ€μκ³Ό κ°μ κ³Όμ μ κ±°μΉλ€.
- (1λ² μ¬μ©ν μ«μ) μ¬μΉμ°μ° (3λ² μ¬μ©ν μ«μ)
- (2λ² μ¬μ©ν μ«μ) μ¬μΉμ°μ° (2λ² μ¬μ©ν μ«μ)
- (3λ² μ¬μ©ν μ«μ) μ¬μΉμ°μ° (1λ² μ¬μ©ν μ«μ)
λλ μ΄λ κ²½μ°μ μλ₯Ό μ‘°κΈμ΄λΌλ μ€μ΄κΈ° μν΄ μμλ ν¬ν¨νμ§ μμλ€.
κ³μ°λμ΄ λ§λ€ μ μλ μ«μλ₯Ό λ΄μ Set μλ£κ΅¬μ‘°κ° μμ±λλ©΄ λͺ©νλ‘ ν μ«μκ° μλμ§ νμΈνκ³ μλ€λ©΄ answerλ₯Ό μ¬μ©ν μ«μλ‘ ν λΉνκ³ break μμΌμ€¬λ€.
β¨οΈ μ½λ
function solution(N, number) {
var answer = -1;
if (N === number) return 1;
const canMakeNum = [...Array(9)].map((_, i) => new Set([parseInt(String(N).repeat(i))]));
for (let i = 1; i < 9; i++) {
for (let j = 1; j < i + 1; j++) {
for (const num1 of canMakeNum[j]) {
for (const num2 of canMakeNum[i - j]) {
canMakeNum[i].add(num1 + num2);
canMakeNum[i].add(num1 * num2);
if (num2) canMakeNum[i].add(Math.floor(num1 / num2));
if (num1 - num2 > 0) canMakeNum[i].add(num1 - num2);
}
}
}
if (canMakeNum[i].has(number)) {
answer = i;
break;
}
}
return answer;
}
'Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Algorithm] λ±μ°μ½μ€ μ νκΈ° (0) | 2023.04.06 |
---|---|
[Algorithm] μ¬λΌμ§λ λ°ν (0) | 2023.04.05 |
[Algorithm] λ°ννλ©΄ μ 리 (0) | 2023.04.03 |
[Algorithm] κ³Όμ μ§ννκΈ° (0) | 2023.04.02 |
[Algorithm] ν λ³ν© (0) | 2023.04.01 |