π λ°±μ€ N-Queen
μ²μμ λ¬΄μ¨ λ¬Έμ μΈκ° μΆμλλ° λμ€μ μμ보λ λλ¦ μ λͺ ν λ¬Έμ μμλ€.
μΌλ¨ dfsλ‘ λ°±νΈλνΉμμΌλ‘ νΈλ건 νλμ μμλ΄€λλ° μ¬κ·λ₯Ό μ§λλ° λ무 μΌλ³μ΄λΌ λͺ»νμλ€.
μ¬μ§μ΄ λ€λ₯Έμ¬λ νμ΄λ₯Ό λ³΄κ³ λ΄ νμ΄λλ‘ main ν¨μλ₯Ό λ§λ€κ³ λ€μ νμ΄λ΄€λλ° κ·Έκ±΄ μκ°μ΄κ³Όκ° λ¬λ€ pypyλ‘ νμμλ... mainν¨μλ₯Ό μ¬μ©νμ§ μκ³ νμλλ μκ°μ΄κ³Όκ° μλλλΌ..
- λ¬Έμ μμ΄λμ΄
μ΄μ°¨μλ°°μ΄λ‘ νμ΄λ λκΈ°λ νμ§λ§ λλΆλΆ 1μ°¨μ λ°°μ΄λ‘ νμλ€.
μ΄λ»κ² 1μ°¨μ λ°°μ΄λ‘ ν리λ?
queenμ΄ μ΄λ ν rowμ μ리μ μμΉνλ€λ©΄ ν΄λΉ rowλ λͺ¨λ μ¬μ© λΆκ°λ₯νλ€.
μ΄ μμ΄λμ΄μμ 1μ°¨μ λ°°μ΄λ‘λ§ κ°λ¨νκ² νμ΄ν μ μλ κ²μ΄λ€.import sys n = int(sys.stdin.readline()) answer = 0 rows = [0] * n # queenμ λ μ μλμ§ νμΈνλ ν¨μ def check(r): for i in range(r): # κ°μ μ΄μ μμΌλ©΄ λμ§ λͺ»νλ€. if rows[i] == rows[r]: return False # λκ°μ μ μλμ§ νμΈνλ€. if abs(r - i) == abs(rows[r] - rows[i]): return False return True def dfs(r): global answer if r == n: answer += 1 return # λ§€κ°λ³μλ‘ λ€μ΄μ¨ rowμ λν΄μ νμΉΈμ© μ΄λνλ©΄μ λλ¦°λ€. for i in range(n): rows[r] = i if check(r): dfs(r + 1) dfs(0) print(answer)
ν λ² μ΄ν΄νλ©΄ μ½λ€.
μ½λ© μ²μνμλ μ΄ λ¬Έμ λ§λ¬λ€λ©΄ μ΄ν΄νλλ° 3μΌμ κ±Έλ Έμ κ² κ°λ€. μ λͺ ν λ¬Έμ λ€μ νΈλ λ°©λ²μ΄ μ§μ§ κΈ°κ° λ§νκ² κ°λ€. λ μ΄μ¬ν νμ΄μΌκ² λ€ γ
π λμ
kubernetesλ₯Ό λ§μ΄ λ€μ΄λ΄€μ§λ§ μ νν λμ§λ λͺ°λΌμ μ°Ύμλ³΄κ³ μ 리ν΄λ΄€λ€.
νΉμ λ§μ΄ν¬λ‘ μλΉμ€λ μκ³ μλ?
λ΄ λΈλ‘κ·Έμ κΈ°κ°λ§νκ² λ°λ‘ μ 리ν΄λκΈ°λ νλ€.
μΌλ¨ μλ€κ³ κ°μ νκ³ μ΄μΌκΈ° νκ² λ€.
λμ»€λ‘ μ§μ λ°°ν¬λ₯Ό ν΄ λ³Έ μ¬λμ΄ λ§μ΄ν¬λ‘ μλΉμ€λΌλ κ°λ μ μ΄ν΄νκ² λλ©΄ μλ¬Έμ μ΄ μκΈΈκ²μ΄λ€. λλ κ·Έλ¬λ€. μλΉμ€λ₯Ό μͺΌκ°μ λ컀μ λ°°ν¬νκ²λλ©΄ 컨ν μ΄λλ€μ΄ μμ² λ§μμ§ν λ° μ΄λ»κ² λ°°ν¬νκ³ κ΄λ¦¬νμ§...? λΌλ μκ°
κ·Έ κ΄λ¦¬λ₯Ό ν΄μ£Όκ³ νλνλ κ΅μ²΄ν΄ μ£Όλ κ²μ μΏ λ²κ° ν΄μ€λ€.π Kubernetesλ₯Ό μ¬μ©νλ μ΄μ
μ΄μ§κ°ν΄μ νΌμμ κ°λ°ν μλΉμ€λ μΏ λ²λ₯Ό μ¬μ©ν νμκ° μλ€. κ³Όν κ²μ΄λ€.
νμ§λ§ μλΉμ€κ° 컀μ§κ³ λ§μ λ§μ΄ν¬λ‘ μλΉμ€λ₯Ό λ€λ£¨κ² λλ€λ©΄ μΏ λ²μ ν¨κ³Όκ° λ°νλλ€.
- μ€μΌμΌλ§
μΏ λ²λ€ν±μ€μ μ£Όμ μ₯μ μ€ νλλ‘ νΈλν½μ λ°λΌ μ ν리μΌμ΄μ μ κ΄λ¦¬νκ³ μ€μΌμΌλ§ ν μ μλ€. κ°μμ€λ½κ² νΈλν½μ΄ μΉμμλ μμμ μλΉμ€λ₯Ό νμ₯μμΌμ€λ€.
- μ§μμ μΈ κ°λ° & ν΅ν©
μ§μμ μΈ κ°λ°μ΄ λμλ¦°κ°. λ§ κ·Έλλμ΄λ€ μΏ λ²λ λ‘€λ§ μ λ°μ΄νΈ, λΈλ£¨/κ·Έλ¦° λ°°ν¬ μ λ΅μ μ΄μ©νλ€.
λ‘€λ§ μ λ°μ΄νΈ : μ ν리μΌμ΄μ μΈμ€ν΄μ€λ₯Ό μμ°¨μ μΌλ‘ μ λ°μ΄νΈ νλ©΄μ μ΄μ λ²μ μ μΈμ€ν΄μ€λ₯Ό λμμ μ’ λ£νλ€. ν΄μ μ ν리μΌμ΄μ μΌλΆ μΈμ€ν΄μ€ μλΉμ€λ₯Ό μ¬μ©μμκ² μ 곡ν¨μΌλ‘μ¨ μ¬μ©μμκ² λ³΄μ΄λ λ€μ΄ νμμ λ°©μ§νλ€.
λΈλ£¨/κ·Έλ¦° λ°°ν¬ : λΈλ£¨λ νμ¬ λ²μ μ μΈμ€ν΄μ€, κ·Έλ¦°μ μ λ²μ μ μΈμ€ν΄μ€λ₯Ό κ°λ₯΄ν¨λ€. μ΄ λ°©μμ κΈ°μ‘΄ λ²μ κ³Ό μλ²μ μ μ ν리μΌμ΄μ μ λμμ μ€ννμ¬ μ λ²μ μ ν μ€νΈ κ²μ¦μ΄ μλ£λλ©΄, νΈλν½μ λΈλ£¨ -> κ·Έλ¦°μ switch over νμ¬ μ¬μ©μκ° λ°λ‘ μ λ²μ μ μ¬μ©ν μ μλλ‘ νλ€.
- λ©ν° ν΄λΌμ°λ μ§μ
AWS, Google, Azureλ±κ³Ό κ°μ μ¬λ¬ ν΄λΌμ°λ νλ«νΌμ΄ μμ§λ§ μΏ λ²λ λ©ν° ν΄λΌμ°λλ₯Ό μ§μνλ€. μ΄κ² κ°λ₯ν μ΄μ λ μΏ λ²κ° cloud 곡κΈμμ νΉνλ apiλ₯Ό μ¬μ©νλ κ²μ΄ μλ κ³΅ν΅ apiλ₯Ό μ¬μ©νκΈ° λλ¬Έμ΄λ€. ν΄μ ν΄λΌμ°λ νλ«νΌκ°μ μ ν리μΌμ΄μ μ μ΄λν μ μλ€. μ΄λ κ² ν¨μΌλ‘μ¨ λ¦¬μ€ν¬λ₯Ό λΆμ°νκ³ μ¬λ¬λΆλΆμμ ν¨κ³Όμ μΈ ν΄λΌμ°λλ₯Ό μ νν μ μλ€.π Kubernetesμ λμ λ°©μ
μΏ λ²λ μ μΈμ λͺ¨λΈμ κΈ°λ°νμ¬ λμνλ€. YAML, JSON μ€μ νμΌμ μν μ μλ₯Ό νλ©΄ μΏ λ²κ° ν΄λΉ μ€μ μ μ€νΈνλ€. μΏ λ²λ μ ν리μΌμ΄μ μ μ§μμ μΌλ‘ λͺ¨λν°λ§νμ¬ νμ¬ μνκ° μνλ μνμ μΌμΉνλμ§ νμΈνλ€.
μ£Όμ μ»΄ν¬λνΈ.
- νλ(Pods) : μΏ λ²μμ μμ°νκ±°λ λ°°ν¬νλ κ°μ₯ μμ λ¨μμ΄λ€. νλλ ν΄λ¬μ€ν°μμ μ€νμ€μΈ νλ‘μΈμ€μ λ¨μΌ μΈμ€ν΄μ€λ₯Ό λνλ΄λ©°, νλ μ΄μμ 컨ν μ΄λλ₯Ό ν¬ν¨νλ€.
- μλΉμ€(Services) : νλ μΈνΈμμ μ€νμ€μΈ μ ν리μΌμ΄μ μ μΆμμ μΌλ‘ λ ΈμΆνλ λ°©λ²μ΄λ€. μλΉμ€λ νλκ° ν΅μ μ κ°λ₯νκ² νλ©°, μΈν°λ·μλ λ ΈμΆνκ² ν μ μλ€.
- λ³Όλ₯¨(Volumes) : νλμ 컨ν μ΄λμ μ κ·Ό κ°λ₯ν λλ ν°λ¦¬μ΄λ€. μΏ λ²λ μ¬λ¬ μ’ λ₯μ λ³Όλ₯¨μ μ§μνμ¬ κ³΅μ μ€ν 리μ§, λ€νΈν¬ μ€ν λ¦¬μ§ λ±μ μ¬μ©ν μ μκ² ν΄μ€λ€.
- λ€μμ€νμ΄μ€(Namespaces) : ν΄λ¬μ€ν° 리μμ€λ₯Ό μ¬λ¬ μ¬μ©μ κ°μ λΆλ¦¬νλ€. μ΄λ₯Ό ν΅ν΄ νμ΄λ νλ‘μ νΈκ° 리μμ€λ₯Ό 격리νκ³ κ΄λ¦¬ν μ μλ€.
- Ingress : ν΄λ¬μ€ν° λ΄λΆ μλΉμ€λ₯Ό μΈλΆμ λ ΈμΆνλ API μ€λΈμ νΈμ΄λ€. μ΄λ₯Ό ν΅ν΄ Http, Https κ²½λ‘λ₯Ό μ μν μ μλ€.
π Kubernetesλ₯Ό μ¬μ©νμ§ μμλ λλ κ²½μ°?
μ ν리μΌμ΄μ μ΄ λ¨μνκ±°λ μ£Όμ λ³νλ νΈλν½ κΈμ¦μ΄ μμκ²μΌλ‘ μμλμ§ μμΌλ©΄ μΏ λ²λ μ¬μ©μμ λ°°μμΌνλ μκ°, μ€μ , κ΄λ¦¬μ λν μκ°μ΄ λ€λ©°. νμ΄ μμμ΄κ±°λ μ λ¬Έ μ§μμ΄ λΆμ‘±ν κ²½μ°λ μ’μ§ μμ μ νμ΄λ€.