μ£Όκ΄μ μΈ κ²¬ν΄μΌ μλ μμΌλ―λ‘ μ°Έκ³ λ§ ν΄μ£ΌμκΈΈ λ°λλλ€.
μ λ κ°λ°μκ° λκΈ°λ‘ λ§μλ¨Ήμ κ²μ 2021λ
2μμ΄μμ΅λλ€. μ 곡μ μννΈμ¨μ΄νκ³Όμ΄μ§λ§ νκ΅ λ€λ
μ λΉμμ 곡λΆλ₯Ό νμ§ μλ νμμ΄κ³ , νμ λ λμ§ μμ΅λλ€. λν ν΄νμ νκ³ λμμΈ κ³΅λΆλ νμμ΅λλ€. κ·Έλμ μμνμ λΉμμ μ λ‘λ² μ΄μ€
μ κ°κΉμ΄ μ·¨μ€μμ΄μμ΅λλ€.
κ²°λ‘ λΆν° λ§μλ리μλ©΄ 2021λ
9μλΆν° μμλ νλ°κΈ° κΈ°μ
κ³΅μ± μ½λ© ν
μ€νΈμμ ν©κ²©λ₯ 90%κ° λμμκ³ , μ΄νμλ 2022λ
μλ°κΈ°μ μ§μν νμ¬λ λͺ¨λ ν©κ²©νμ΅λλ€(λ€μ΄λ², μΉ΄μΉ΄μ€, λΌμΈ, μ λμ½ κΈ°μ
, λκΈ°μ
λ±). μμ μ¬μ§μ²λΌ νΉλ³μ±μ© λμμλ‘ μ μ λκΈ°λ νμ΅λλ€.
κ·Έλ¬λ©΄ μ²μλΆν° μ΄λ° ν©κ²©λ₯ μ΄ λμ¬ μ μμμκΉμ? λ¨μ°μ½ μλλΌκ³ λ§μλλ¦¬κ³ μΆμ΅λλ€. μ λ κ·Έμ μ¬λ₯ μλ νλ²ν μ¬λμ΄κΈ° λλ¬Έμ
λλ€. κ·Έλ¬λ©΄ μ΄λ»κ² μ½λ© ν
μ€νΈλΌλ κ΄λ¬Έμ μ½κ² λκΈΈ μ μμμκΉμ λν΄ μ¬λ¬λΆλ€κ» μ μ κ³΅λΆ λ°©λ²μ μκ°ν΄λλ¦¬λ €κ³ κΈμ μμ±νκ² λμμ΅λλ€. μ΄μ κ°λ°μμ μ
λ¬Ένμλ λΆλ€, κ°λ°μ μνλλ° μ½λ© ν
μ€νΈμμ νμ λΆν©κ²©μ λ§μ΄νμλ λΆλ€μκ² λμμ΄ λμμΌλ©΄ ν©λλ€.
01. μΈμ΄(Language) μ ν
μμ§ μΈμ΄λ₯Ό μ ννμ§ λͺ»νμ λΆλ€λ κ³μκ³ , κ°λ° μΈμ΄λ μ½λ© ν
μ€νΈ μΈμ΄λ λ€λ₯΄κ² λ΄μΌ νλ κ³ λ―Όμ λΉ μ§μ μ μ΄ λ€λ€ ν λ²μ―€ μμΌμ€ κ²μ
λλ€. κ²°λ‘ λΆν° λ§μλ리μλ©΄ μ½λ© ν
μ€νΈμμ λ³ΈμΈμκ² λ§λ μΈμ΄λ₯Ό μ ννμλ κ²μ μΆμ²λ립λλ€.
κ·Έλ¬λ©΄ λ³ΈμΈμκ² λ§λ μΈμ΄κ° 무μμΈμ§ λͺ¨λ₯΄λ λΆλ€μ μλ£κ΅¬μ‘° κ°μ κ²μ 곡λΆνλ©΄μ μμ±λ μ½λλ₯Ό λ³΄κ³ μ΄ν΄κ° μ λκ±°λ 곡λΆν΄λ³΄κ³ μΆμ μΈμ΄λ₯Ό μ ννλ κ²μ μΆμ²λ립λλ€.
κ·ΈλΌ λ³ΈμΈμκ² λ§λ μΈμ΄κ° μ΄λ€ μ₯μ μ΄ μμκΉμ? λ°λ‘ μ΅λλ ₯ μ°¨μ΄μ
λλ€. μ νλΈμμλ, λΈλ‘κ·Έμμλ μ±μ© κ³Όμ μμ μΈμ΄λ μ€μνμ§ μλ€κ³ μ΄λ―Έ λ§μ΄ μλ €μ§ μ¬μ€μ΄λΌ μκ°ν©λλ€(νΉμ κΈ°μ
μ μΈ). κ·Έλ¬λ©΄ μ΄ μ΄μ κ° λ¬΄μμΌκΉμ?
λ°λ‘ νλμ μΈμ΄λ₯Ό μκ³ μλ€λ©΄ λ€λ₯Έ μΈμ΄λ‘λ μΆ©λΆν μ΄μμ΄ κ°λ₯νλ€λ μ μ
λλ€. λ¬Όλ‘ λ³ΈμΈμ΄ μ¬μ©νμ§ μλ μΈμ΄κΈ° λλ¬Έμ λΉκ΅μ μμ°μ±μ΄ λ¨μ΄μ§ μλ μμ§λ§ 'μμ μλ λͺ» λλ κ²½μ°'λ μκΈ° λλ¬Έμ
λλ€.
κ·Έλ λ€λ©΄ μ΄μμ νκΈ° μν΄μλ λ³Έλμ μΈμ΄μ λν΄ μ μκ³ μμ΄μΌκ² μ£ ? κ·Έκ²μ΄ λ°λ‘ μμ λ§μλλ¦° μ΄μ μ΅λλ ₯ μ°¨μ΄μ
λλ€. μ΄λ―Έ ꡬνλ λΌμ΄λΈλ¬λ¦¬λ₯Ό κ°μ Έλ€ μ°λ κ²λ, μλ‘μ΄ μκ³ λ¦¬μ¦μ λ°°μΈ λλ λΉ λ₯΄κ² μ΅λν μ μλ κ²μ΄ λ°λ‘ μΈμ΄ μ νμ μ€μμ±μ
λλ€. 첫 λ²μ§Έ μ£Όμ λ‘ μΈμ΄ μ νμ κ°μ Έμ¨ μ΄μ λ μ¬λ¬λΆμ΄ μμΌλ‘ κ°λ°ν λμ κ°μ₯ ν° μ€μλλ₯Ό μ°¨μ§νκΈ° λλ¬Έμ μΈμ΄ μ νμ μ μ€ν μνμκΈΈ λ°λΌκ² μ΅λλ€.
μΆκ°λ‘ μ½λ© ν
μ€νΈμμ νμ΄μ¬μ΄ μ 리νλ€κ³ μλ €μ Έ μμ§λ§, λ³ΈμΈμκ² μ λ§μ μλ μμ΅λλ€. κ·Έλ¬λ 'μ ν'μ μ«μ§ λ§κ³ , λ³ΈμΈμκ² λ§λ κ²μ μ
μΌμ
¨μΌλ©΄ μ’κ² μ΅λλ€.
μ λ μμ μ΄μ λ‘ νμ΄μ¬μΌλ‘ μμνμ§λ§, μ΄μ΄ μ’κ²λ κ²°μ΄ λ§λ μΈμ΄μκ³ , μ΄νμλ νμ΄μ¬μΌλ‘ μ½λ© ν
μ€νΈλ₯Ό λ³΄μ§ μλ νμ¬λ€λ ν©κ²©ν μ μμμ΅λλ€.
02. μλ£κ΅¬μ‘°(Data Structure)μ μ€μμ±
κ·Έλ λ€λ©΄ μ½λ© ν
μ€νΈμμ μΈμ΄λ₯Ό μ μ΄ν΄νκΈ° μν΄μλ λ°±κ·ΈλΌμ΄λλ‘ μλ£κ΅¬μ‘°κ° μμ΄μΌ ν©λλ€. λ§μ λΆλ€μ΄ κ°κ³Όνκ³ μλ λΆλΆμ΄ μκ³ λ¦¬μ¦ κ³΅λΆλ μ΄μ¬ν νμ§λ§, μλ£κ΅¬μ‘° 곡λΆλ μ΄μ¬ν νμ§ μλλ€λ μ μ
λλ€. λ¨μν μκ³ λ¦¬μ¦μ μ¬μ©λλ μλ£κ΅¬μ‘°μ λν΄μλ§ κ³΅λΆν κ²μ΄ μλλΌ μ‘°κΈ λ νλκ² κ³΅λΆνμ
μΌ ν©λλ€.
μ μκ³ λ¦¬μ¦μ΄ μλ μλ£κ΅¬μ‘°λ₯Ό 곡λΆν΄μΌ ν κΉμλΌλ μ§λ¬Έμ ν μλ μμ΅λλ€. ν κ°μ§ μ½λλ₯Ό λ³΄κ³ μ€λͺ
λλ¦¬κ² μ΅λλ€.
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - i; j++) {
...
}
}
μ΄ μ½λμ μκ° λ³΅μ‘λλ μ΄λ»κ² λ κΉμ? μκ° λ³΅μ‘λμ μ νν μκ³ κ³μ λΆμ΄λΌλ©΄ λ¨μ κ³μ°μΌλ‘ O(n * (n - 1))μ΄λΌλ 곡μμΌλ‘ O(n^2 - n) O(n^2)μ΄ λλ κ²μ μμ€ κ²μ
λλ€.
κ·Έλ¬λ μκ° λ³΅μ‘λλ₯Ό μ λͺ¨λ₯΄κ³ νΈμ λΆλ€μ O(n^2) κ°κΈ°λ νλ°, μ κ·Έλ κ² λλμ§λ ν·κ°λ¦¬μ
¨μ κ²μ
λλ€(κ°μΈμ μκ°). μλ§ μ¬κΈ°κΉμ§λ μλΏμ§ μμΌμ€ κ²μ
λλ€. κ·Έλ λ€λ©΄ μ¬λ¬λΆλ€μ΄ μκ³ λ¦¬μ¦μμ λ§μ΄ μ¬μ©νλ μ°μ μμ νμ λν μ½μ
, μμ μκ° λ³΅μ‘λλ₯Ό ν λ² λ μ¬λ €λ³΄μΈμ.
λ¨μ μκ³ λ¦¬μ¦μ ν λ μ°μ μμ νμ μ½μ
, μμ μκ° λ³΅μ‘λλ O(logN)μ΄λΌκ³ μκΈ°νλ― μΈμ°μ λΆλ€ λ§μΌμ€ κ²μ
λλ€. μ μ°μ μμ νμ μκ° λ³΅μ‘λκ° O(logN)μΈμ§ μ νν μ€λͺ
ν μ μλ μ¬λμ λ³λ‘ μμ΅λλ€.
μ°μ μμ νλ νΈλ¦¬κ΅¬μ‘°λ‘ λ°μ λ ¬ μνλ₯Ό μ μ§νκ³ μμ΅λλ€. μ½μ
ν λλ 맨 λ§μ§λ§ λ
Έλμ μΆκ°νλ©° λΆλͺ¨ λ
Έλμ λΉκ΅νλ©° μ리 κ΅νμ΄ μΌμ΄λ©λλ€. λ°λ©΄μ μμ ν λλ λ£¨νΈ λ
Έλμ μλ κ²μ μμ νλ©° κ°μ₯ λ§μ§λ§ λ
Έλλ₯Ό 루νΈμ μ¬λ¦¬κ³ μμκ³Ό λΉκ΅νλ©° μ리 κ΅νμ΄ μΌμ΄λ©λλ€. κ·Έλμ ν λ² λΉκ΅ν λλ§λ€ μ λ°μ© κ²½μ°μ μκ° μ€μ΄λ€κΈ° λλ¬Έμ μ½μ
, μμ μ κ²½μ° λͺ¨λ O(logN)μ μκ° λ³΅μ‘λλ₯Ό κ°μ΅λλ€.
μ΄λ λ― μ½λμλ λΆνλ― μλ£κ΅¬μ‘°κ° λ
Ήμμμ΅λλ€. μ κ° μμ λ§μλλ¦° μΈμ΄ μ νμμλ μ΅λλ ₯ μ°¨μ΄κ° μ€μνλ€κ³ λ§μλλ Έμ΅λλ€. λ³ΈμΈμ΄ ꡬνν μ½λλ μ νν μ΄λ€ μλ£κ΅¬μ‘°λ₯Ό μ¬μ©νκ³ , μ΄λ€ 볡μ‘λλ₯Ό κ°λμ§μ λν΄μλ λͺ
νν μκ³ μμ΄μΌ ν©λλ€. λ°λΌμ μ΄ λͺ¨λ κ²μ μκΈ° μν΄μ λ°±κ·ΈλΌμ΄λλ‘ μλ£κ΅¬μ‘°κ° μ€μνλ€λ κ²μ
λλ€.
03. λ³ΈμΈμκ² λ§λ κ³΅λΆ λ°©λ²
μ κ° λ§¨ μμ μ£Όκ΄μ μΈ κ²¬ν΄μ΄λ―λ‘ μ°Έκ³ λ§ ν΄λ¬λΌκ³ λ§μλλ Έμ΅λλ€. μ λ λ€λ₯Έ μ¬λλ€κ³Ό λκ°μ΄ μ κ° νλ κ³΅λΆ λ°©λ²μ΄ μ μκ² λ§μμ λΏ μ½λ© ν
μ€νΈ 곡λΆνλ μ¬λ¬ λ°©λ² μ€ νλμ
λλ€. κ·Έλ¬λ―λ‘ 'μ λ΅'μ μλλλ€.
κ·Έλμ λ³ΈμΈμκ² λ§λ κ³΅λΆ λ°©λ²μ μ°Ύλ κ²μ΄ μ€μν©λλ€. μμ λ κ°λ μ£Όκ΄μ μΈ κ²¬ν΄κ° μλ νμ νλͺ©μ΄λΌ μκ°ν΄λλ Έκ³ μ΄νμλ λ³ΈμΈλ§μ κ³΅λΆ λ°©λ²μ μ°Ύμ λκ°μ
μΌ ν©λλ€.
λ§μ λ νΌλ°μ€ μ€ 'μκ°μ μ¬κ³ , μκ° μμ νμ§ λͺ»νλ©΄ λ΅μ§λ₯Ό λ³΄κ³ λ€μμ λ€μ νμ΄λΌ.'λΌλ λ νΌλ°μ€λ₯Ό λ€λ€ ν λ²μ―€ 보μ
¨μ κ²μ
λλ€. μ λ 무μμ μ΄ λ°©λ²μΌλ‘ 곡λΆλ₯Ό νμμ§λ§ κ²½νμΌλ‘ λ΄€λ μ½λ© ν
μ€νΈμμ λͺ¨λ λΆν©κ²©μ΄λΌλ κ²°κ³Όλ₯Ό λ§μ νμ λ€μκ³Ό κ°μ κ³΅λΆ λ°©λ²μ λ°κΏ¨μ΅λλ€.
- μκ³ λ¦¬μ¦ μ ν λ³λ‘ μ¬λ¬ λ¬Έμ λ₯Ό νμ΄λ³Έλ€.
- κ·Έ μ€ μ½ν νλͺ©μ νλ³νλ€.
- μ½ν νλͺ©μ κΉμ΄ μκ² κ³΅λΆνκ³ κ·Έμ κ΄λ ¨λ μλ£κ΅¬μ‘°λ₯Ό 곡λΆνλ€.
- μ¬μ΄ λ¬Έμ λΆν° κΈ°μ΄λ₯Ό λ€μ§λ€.
- μ΄ν μ΄λ €μ΄ λ¬Έμ μ μ κ·Όνλ€.
μ λ λ§μ§λ§ μ΄λ €μ΄ λ¬Έμ μ μ κ·Όν λ λͺ» νμ΄λ μ’μΌλ λ΅μ§λ₯Ό μ λ μ λ³΄λ €κ³ νμ΅λλ€. κ·ΈλΌμλ νμ§ λͺ»νλ€λ©΄, κ΄λ ¨λ μλ£λ₯Ό λ€μ μ½κ±°λ λΉμ·ν λ¬Έμ νμ΄ λ°©λ²μ μ°Έκ³ νμ΅λλ€.
μ λ΅μ§λ₯Ό λ³΄μ§ μμλλ μ§λ¬Έμ ν μ μμ΅λλ€. μ κ° λ¨μ΄μ‘λ μ½λ© ν
μ€νΈλ₯Ό 보면 μκ³ λ¦¬μ¦μ λ μ¬λ¦¬μ§ λͺ»ν΄μκ° μλλΌ μ²μ λ§μ£Όνλ μ΄λ €μ΄ λ¬Έμ μ λν λλ €μ λλ¬Έμ μκ° μ‘°μ μ΄λ κΈ΄μ₯κ° λλ¬Έμ νμ§ λͺ»ν κ²½μ°κ° λ€μμμ΅λλ€. μ μ μ΄λ¬ν μ½μ μ 보μνκΈ° μν΄μ μ΄λ° λ°©μμΌλ‘ 곡λΆλ₯Ό νμκ³ , μ΄λ €μ΄ λ¬Έμ λ₯Ό μ¬λ¬ κ° νλ€ λ³΄λ©΄ μ½λ© ν
μ€νΈμμ λμ€λ λ¬Έμ λ€μκ²λ μ«μ§ μκ³ ν μ μλ μμ κ°μ μ»μΌμ€ μ μμ κ²μ΄λΌ νμ ν©λλ€.
04. λ§μΉλ©°
μ±μ© νλ‘μΈμ€μμ κΈ°νλ μ»μ§ λͺ»νκ³ λ¨μ΄μ§λ κ²μ΄ κ°μ₯ μμ½μ΅λλ€. κ·Έλ κΈ°μ κ°λ°μλΌλ©΄ λ°λμ ν΅κ³Όν΄μΌ νλ μ½λ© ν
μ€νΈλ₯Ό κ°λΏν λκ³ λ©΄μ μ΄λΌλ κΈ°νμ λΏμμΌλ©΄ μ’κ² μ΅λλ€. λ©΄μ μ κ°μΌ λ³ΈμΈμ΄ ν΄μ¨ κ²μ μ΄ννλ©° μ΅μ’
μ μΌλ‘ μ
μ¬ν μ μκΈ° λλ¬Έμ
λλ€.
μ μμ λ©΄μ μμ μ½ν νΈμ΄μμ§λ§ κ·Έλλ κ²½νμ΄ λ§μ΄ μμ¬ κΈ°μ
μ ν©κ²©ν μΌμ΄μ€μ
λλ€. λμ΄μΌλ³΄λ©΄ 첫 λ©΄μ , λ λ²μ§Έ λ©΄μ μ λ§νμ§λ§, μ΄νμλ ν©κ²© μκ·Έλλ λ°μκ³ μ΄λ ΅λ€κ³ μλ¬Έλ κΈ°μ
μ λ©΄μ λ€λ ν©κ²©νμ΅λλ€. κ²°κ΅ μ κ° μ΄ λͺ¨λ κ²μ΄ κ°λ₯νλ κ²μ 'κΈ°ν'κ° λ§μκΈ° λλ¬Έμ
λλ€. μ¬λ¬λΆλ€λ κΌ μ½λ© ν
μ€νΈλΌλ λ²½μ λ§ν κΈ°νκ° μ¬λΌμ§λ κ²½μ°κ° μμμΌλ©΄ νλ λ°λμΌλ‘ ν¬μ€ν
μ λ§μΉκ² μ΅λλ€. λ€μ ν¬μ€ν
λλ μλ£κ΅¬μ‘°μ λν΄ μ€λͺ
λλ¦¬κ² μ΅λλ€.