π μκ³ λ¦¬μ¦ μ 리
2021.04.28 - [μκ³ λ¦¬μ¦] - λμ κ³νλ²(Dynamic Programming)
π λ¬Έμ
κ΄νΈ, μ΄μ΄λΆμ΄κΈ°(55, 555 κ°μ), μ¬μΉμ°μ° λͺ¨λ κ°λ₯μ΄κΈ° λλ¬Έμ
κ²½μ°μ μκ° λ€μνκ³ λ©μ²ν μ λ μΌλ¨ νλμ© μ¨λ³΄λ©΄μ λ¬Έμ μ κ·μΉμ μ°Ύμλ³΄κΈ°λ‘ νμμ΅λλ€...
β νμ΄κ³Όμ
λμ κ³νλ² κ°λ μ 리νκ³ λμ μ΄ λ¬Έμ λ₯Ό λ΄€μ λ,
N μ¬μ© νμμ λ°λΌμ μ μ₯νκ³ νμκ° λ§μμ§ λ κ·Έ μ μ μ μ₯ν΄λ κ°λ€μ μ¬μ©ν΄μΌ κ² λ€λ μκ°μ΄ λ€μμ΅λλ€.
κ΄νΈλ₯Ό μ΄λ»κ² ν΄μΌν μ§ κ°μ΄ μ μ‘νλλ° λ€ μ¨λ³΄κ³ λμ μ΄ν΄νμ΅λλ€...(λλλλ)
N μ¬μ© νμκ° 3μΈ κ²½μ°,
- 3κ° μ΄μ΄λΆμ΄κΈ°
- (2) + 1
- 1 + (2)
λ‘ λλμ΄μ§ μ μμ΅λλ€.
μ΄λ, 2 +1μμ '+'λ‘ λλμ΄μ§ κ²½μ° "(2) + (1)"μ²λΌ κ΄νΈκ° λΆλλ€κ³ μκ°νκ³ λ¬Έμ λ₯Ό νμμ΅λλ€.(κ΄νΈμ λ°λΌ κ²°κ³Όκ° λ¬λΌμ§κΈ° λλ¬Έμ)
1 + 1 + 1λ μλλ° μ λΉΌλμ§λΌλ μκ°μ΄ λμ€ μλ μλλ°
(N) β (N) β (N) μ λ€μ΄κ° μ°μ°μμ λ°λΌμ κ²°κ΅ κ΄νΈκ° λ¬Άμ΄κ² λλλ°
(βμ μ€κ°μ λ€μ΄κ° μ°μ°μλ₯Ό λ»ν©λλ€!)
μλ₯Ό λ€μ΄μ (5) + (5) / (5)λΌ μΉλ©΄
5 + (5/5)λ‘ λ€μ λ¬Άμ΄κ² λμ΄μ "1 + 2"ννκ° λλ κ²μ λλ€.
μ€λ³΅μ΄ μΌμ΄λκΈ° λλ¬Έμ μ΄λ κ΅³μ΄ λ°λ‘ μκ°ν νμκ° μμ΅λλ€.
N μ¬μ© νμκ° 4μΈ κ²½μ°μ,
- 2 + 1 +1 / 1 + 2 +1 / 1 + 1 +2
- 1 + 1 + 1 +1
μΈ κ²½μ°λ μλλ°
1 + 1 + 1 +1 μΈ κ²½μ°λ μμμ μ€λͺ ν κ²κ³Ό κ°μ΄
2 + 1 +1 / 1 + 2 +1 / 1 + 1 +2 ννλ‘ λ¬ΆμΌ μ μκ³ (5*5 +5 + 5)
μ΄λ λ 2+2, 3+1, 1+3 ννλ‘ λ¬ΆμΌ μ μμΌλ―λ‘ μ€λ³΅λλ κ²½μ°μ λλ€.
μ΄λ° μμΌλ‘ μκ°μ νκ³ μ½λλ₯Ό μ§κΈ° μμνλλ°λ μ΄λ ΅λλΌκ΅¬μ~,~
Top-down, Bottom-up μ€ μ΄λ λ°©μμ μ νν΄μΌν μ§ λ¨Όμ μκ°ν΄λ΄€λλ°
μμ μλΆν° μμκ°λ κ²μ΄ λ§λ€λ μκ°μ΄ λ€μ΄μ Bottom-up λ°©μμ μ¬μ©ν΄μΌκ² λ€κ³ μκ°νκ³
λ¬Έμ μμ μ΅μκ°μ΄ 8λ³΄λ€ ν¬λ©΄ -1μ returnνλ€κ³ νμμΌλ―λ‘
νμκ° 8μΌ λκΉμ§λ§ ꡬν΄λ©΄ λ λ― ν©λλ€!
μ΄μ΄λΆμ΄λ κ²½μ°λ μμ λ¨Όμ μ μ₯ν΄λκ³ μμν©λλ€.
μ€λ³΅μ νΌνκΈ° μν΄μ set()μ μ μ₯ν΄μ€λλ€.
F=[set() for i in range(8)]
for n in range(8):
F[n].add(int(str(N)*(n+1)))
μ²μμλ setμ΄ μλ listμ μ μ₯νλ€κ° μμ£Ό λ리λ리μμ΅λλ€....
μ΄μ μ΄μ΄λΆμ΄μ§ μλ κ²½μ°λ₯Ό μκ°ν΄λ΄ μλ€!
F[0], μ¦ N μ¬μ© νμκ° 1μΌ λλ μ΄μ΄λΆμΈ κ°λ°μ μκΈ° λλ¬Έμ λ°μ΄λκ³ F[1]λΆν° μμν©λλ€.
μ¬μ© νμμ indexκ°μ΄ "-1" μ°¨μ΄κ° λκΈ° λλ¬Έμ forλ¬Έ λ릴 λ μ½κ° ν·κ°λ Έλλ°
nμ Fμ index, Nμ μ¬μ© νμλ₯Ό cntλΌκ³ νλ©΄
n = cnt -1
F[n] = F[i] + F[n-i-1] (0<=i < n)
λΌκ³ μ 리ν μ μκ² μ΅λλ€.
μ μ F[n] μ±μκ°λ©΄ F[n]μ ν¬κΈ°λ μμ²λκ² λΆμ΄λ©λλ€.
numberμ κ°μ λλ₯Ό 체ν¬ν΄μ€μΌ νλλ° κ°λ©μ΄λ 4μ€ forλ¬ΈμΈλ°
μ΄λμμ 체ν¬ν΄μ€μΌ ν¨μ¨μ±μ΄ μ’μκΉ μκ°νλ€κ°
1 .4λ²μ§Έ forλ¬Έμμ +, -, *, / ν λ λ°λ‘ 체ν¬ν μ§
2. F[n]μ λͺ¨λ μ μ₯ν νμ 체ν¬ν μ§
1λ²μ μ½λκ° μ‘°κΈ μ§μ λΆν΄μ§ κ² κ°μμ κ·Έλ₯ 2λ²μΌλ‘ μ -ν
def solution(N, number):
if N==number:
return 1
F=[set() for i in range(8)]
for n in range(8):
F[n].add(int(str(N)*(n+1)))
for n in range(1,8):
for i in range(n):
for a in F[i]:
for b in F[n-i-1]:
F[n].add(a+b)
F[n].add(a - b)
F[n].add(a * b)
if b!=0:
F[n].add(a // b)
if number in F[n]:
return (n+1)
return -1
λ¬Έμ λ 볡μ‘νμ§λ§ μ½λλ κΉλνκ² λ± μ§μ΄λ κ² κ°λ€μ₯!
π― μ νμ±/ν¨μ¨μ± ν μ€νΈ
π κ³ μλλ€μ μ½λ
λ€λ₯Έ λΆλ€μ νμ΄λ₯Ό μ λλ‘ λ―μ΄λ³΄μ§λ λͺ»νκ³ νλ루봀λλ° μ μ λΉμ·νλ κ² κ°μ΅λλ€!
λ¬Έμ νΈλλ° λ무 νλΉ μ Έμ μ€λμ λ°μ΄λκ² μ¨λ€λ€......
π μλ‘κ² μκ² λ λ΄μ©
π€ κ°μ λ°©μ
π μ§λ¬Έ/νΌλλ°±
πβοΈ λ§μΉλ©°...
'μ½ν > νλ‘κ·Έλλ¨Έμ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Programmers μ½λ©ν μ€νΈ] DFS/BFS - λ¨μ΄ λ³ν (0) | 2021.07.25 |
---|---|
(λ―Έμμ±)[Programmers μ½λ©ν μ€νΈ] νμλ² - μ¬ μ°κ²°νκΈ° (0) | 2021.07.11 |
[Programmers μ½λ©ν μ€νΈ] ν΄μ - μμ₯ (0) | 2021.04.04 |
[Programmers μ½λ©ν μ€νΈ] νμλ² - ꡬλͺ λ³΄νΈ (0) | 2021.04.04 |
[Programmers μ½λ©ν μ€νΈ] μμ νμ - μμ μ°ΎκΈ° (0) | 2021.03.12 |