
HTMLμ μ κ· ννμλ§μΌλ‘ νμ±ν μ μμκΉ?
μ΄λ² ν¬μ€ν μμλ μ΄λ¦λ§ λ€μ΄λ λμ΄ λκΈ° μμνλ λ§μ±μ κ·Έ λ μ, μ κ· ννμμ λν μΈ λ²μ§Έ μ΄μΌκΈ°λ₯Ό ν΄λ³΄λ €κ³ νλ€.
νμλ μκ³ μ¬λ¬λΆλ μκ³ μΈμ λͺ¨λκ° λ€ μλ€μνΌ μ κ· ννμμ νμ μ λν λ¬Έλ²μΌλ‘ μ λͺ ν λ μμ΄κΈ° λλ¬Έμ, μ§λ λ² νμκ° μΌλ λΆκ·μΉ μμμ κ·μΉμ μ°Ύμλ΄λ μ κ· ννμ ν¬μ€ν μ²λΌ μ κ· ννμμ λ¬Έλ²μ λΆμνκ³ μ¬μ©λ²μ μλ €μ£Όλ ν¬μ€ν λ€ λν κ΅μ₯ν λ§λ€.
λ°λ©΄ κ·Έ μ
λν λ¬Έλ²μ μ΅μν΄μ§κ³ λλ©΄ λ¬Έμμ΄κ³Ό κ΄λ ¨λ κ΅μ₯ν λ€μν λ¬Έμ λ₯Ό μ§§μ μ κ· ννμλ§μΌλ‘ λΉ λ₯΄κ² ν΄κ²°ν μ μκΈ° λλ¬Έμ, κ°λ°μλ€μκ²λ μλΉν μ μ¦μ λμμ΄λΌκ³ ν μ μλ€. (νμ μ£Όλ³ κ°λ°μλ€λ λλΆλΆ μ κ·μ λ³λ‘ μ μ’μνλ€β¦)
κ·Έλμ μ κ· ννμμΌλ‘ μ΄λ€ λ¬Έμ λ₯Ό ν΄κ²°ν λ, ꡬκΈλ§μ ν΅ν΄ μ°Ύμ μ κ· ννμμ 볡λΆνκ±°λ regexr κ°μ μ¬μ΄νΈμμ μ½μ§μ νλ©° ν΄κ²°νλ κ²½μ°κ° λ§μλ°, μ΄ κ³Όμ μμ μλͺ»λ μ κ· ννμμ μ무 κ²μ¦μμ΄ μ¬μ©νμ¬ νΌλ₯Ό 보λ μΌμ΄μ€κ° μμ μ‘΄μ¬νλ€.
λ¬Όλ‘ μ΄λ€ μ κ· ννμμ λ³΄κ³ μ΄κ² μ¬λ°λ₯Έ μ κ· ννμΈμ§ μλμ§λ₯Ό νμ νλ κ²μ μ½μ§ μλ€. νμ§λ§ μ κ· ννμμ΄λΌλ κ²μ΄ μ μΈμμ λμ€κ² λμλμ§, μ΄λ€ νκ²½μμ ꡬλλλ κ²μ μ μ λ‘ λ§λ€μ΄μ§ κ²μΈμ§λΆν° μκ³ λλ©΄ μμ°μ€λ½κ² μ κ· ννμμ νκ³μ λ μ΄ν΄ν μ μκ² λλ€.
μ΄λ² ν¬μ€ν μμλ νμμ κ°μ νλ‘ νΈμλ κ°λ°μμκ²λ λ무λλ μ΅μν HTMLμ΄λΌλ μΈμ΄λ₯Ό μ κ· ννμλ§μΌλ‘ νμ±ν μ μλκ°λΌλ μ§λ¬Έμ ν΅ν΄ μ κ· ννμμ΄ κ°λ°λ λͺ©μ κ³Ό νκ³μ λν΄μ μ΄μΌκΈ° ν΄λ³΄λ €κ³ νλ€.
μλͺ»λ μ κ· ννμμ΄ λ§λλ μΌκ·Ό μν©
본격μ μΈ μ€λͺ μ λ€μ΄κ°κΈ°μ μμ, μλͺ» μμ±λ μ κ· ννμμ΄ μ΄λ€ μν©μ λΆλ¬μ¬ μ μλμ§λΆν° ν¨κ» μ΄ν΄λ³΄μ.
νμκ° μ΄ ν¬μ€ν
μμ μ΄μΌκΈ°νλ μλͺ» μμ±λ μ κ· ννμμ βμ κ· ννμμ΄ a
λ₯Ό μ°ΎμμΌ νλλ°, b
λ₯Ό μ°Ύμμ΄βμ κ°μ λλμ μλλ€. μ¬μ€ μ΄λ° λ¬Έμ λ κ·Έλ₯ μ κ· ννμ λ¬Έλ²μ΄ μ΅μνμ§ μμμ μ€μν κ²μ΄κΈ° λλ¬Έμ, μκ°μ κ°μ§κ³ μ κ· ννμμ μ‘°κΈλ§ μμΈν λ€μ¬λ€ 보면 λꡬλ μ§ μλͺ» μμ±ν ννμ μ°ΎμλΌ μ μλ€.
νμκ° μ΄μΌκΈ°νκ³ μΆμ κ²μ μ κ· ννμμ΄ μλνλ μ리λ₯Ό μ λͺ¨λ₯΄κ³ μ¬μ©νμ λ λ°μν μ μλ νΌν¬λ¨Όμ€ μ΄μλ, νΉμ μ κ· ννμμΌλ‘λ μμ ν΄κ²°μ΄ λΆκ°λ₯ν λ¬Έμ λ₯Ό μ΄λ»κ²λ ν΄κ²°νλ €κ³ λΆμ‘κ³ μλ μ¬ν μν©λ€μ΄λ€.
λ¬Όλ‘ κ°λ°μλ€μ΄ μ΄λ° μ리 κ°μ 건 λͺ°λΌλ μ κ· ννμμ μ¬μ©ν μ μλλ‘ μ κ· ννμ μμ§μ΄λΌλ μΆμν κ³μΈ΅μ΄ μ‘΄μ¬νλ κ²μ΄κΈ°λ νμ§λ§, κ·Έλ λ€κ³ λ무 μμ§λ§ λ―Ώκ³ μλ€κ°λ λ―Ώμλ μ κ· ννμνν λ·ν΅μλ₯Ό μ»μ΄λ§λ μν©μ΄ μΌλ§λ μ§ λ°μν μ μλ€.
μμν λλμ§ μλ μ κ· ννμ
첫 λ²μ§Έ λ·ν΅μ μν©μ μ κ· ννμμ΄ ν¨ν΄μ λ§€μΉνλ κ³Όμ μ μ λͺ¨λ₯΄κ³ μ¬μ©νμ λ λ°μν μ μλ νΌν¬λ¨Όμ€ μ΄μμ΄λ€.
μ κ· ννμμ DFS(κΉμ΄ μ°μ νμ) μκ³ λ¦¬μ¦μ κΈ°λ°μΌλ‘ νλ λ°±νΈλνΉ μκ³ λ¦¬μ¦μ μ¬μ©νμ¬ λ¬Έμμ΄μ ν¨ν΄μ λ§€μΉνλ€. μ¦, μ΄λ€ λ Έλλ₯Ό μ΄λ€ 쑰건μΌλ‘ νμνλμ λ°λΌμ ν¨ν΄μ λ§€μΉνλ μκ°μ΄ μκ°λ³΄λ€ λ§μ΄ κΈΈμ΄μ§ μλ μλ€λ κ²μ΄λ€.
νΉν μλ°μ€ν¬λ¦½νΈ μμ§μ ν¬ν¨λμ΄μλ μ κ· ννμ μμ§μ λΉλκΈ°κ° μλ λκΈ°μμΌλ‘ μλνκΈ° λλ¬Έμ μ κ· ννμμ΄ ν¨ν΄ λ§€μΉνλλΌ μκ°μ μ€λ μ‘μλ¨Ήλλ€λ©΄, κ·Έ μκ° λμ λ€λ₯Έ μΌμ μ ν μνν μ μλ λλ¬Όλλ μν©μ΄ λ°μν μλ μλ€.
μ΄κ² μ΄λ€ μν©μΈμ§ μ΄ν΄κ° λμ§ μλλ€λ©΄ λΈλΌμ°μ μμ μ νμ μ΄κ³ μλ μ½λλ₯Ό μ½μμμ μ€νν΄λ³΄λλ‘ νμ. (μ΄ νμμ νλ©΄ κΈμ λͺ» μ½μν λ λ€λ₯Έ νμμ νμβ¦)
// λ¬Έμμ΄ κΈΈμ΄μ μκ΄μμ΄ λ¬΄μ‘°κ±΄ νμ 8ν
/^(\d+)*$/.test('123123123123123123');
// νμ 26ν
// μ΄ μ λλ κΈλ°© λλλ€
/^(\d+)*$/.test('123!');
// νμ 98,306ν
/^(\d+)*$/.test('123123123123123!');
// μ΄...? μ°μ°μ΄ μ λλλ€....
/^(\d+)*$/.test('123123123123123123123123123123123123123123!');
첫 λ²μ§Έ μμλ λ¬Έμμ΄ κΈΈμ΄μ μκ΄μμ΄ λ¬΄μ‘°κ±΄ 8νμ νμλ§μΌλ‘ λΉ λ₯΄κ² ν¨ν΄μ λ§€μΉνκ³ κ²°κ³Όλ₯Ό λ°ννμ§λ§ λ λ²μ§Έ μμλ₯Ό 보면 λ¬Έμμ΄ λμ νΉμλ¬Έμκ° νλ λΆμμ λΏμΈλ° μ°μ° νμκ° κΈ°νκΈμμ μΌλ‘ λμ΄λλλ, κΈκΈ°μΌ μ°μ°μ΄ λλμ§ μλ μμ€κΉμ§ λλ¬νλ€.
λ§μ½ μ΄λ° μν©μ΄ μ€μ λΉμ¦λμ€ μ΄ν리μΌμ΄μ μμ λ°μνλ€λ©΄ μ μ λ μ΄λ ν UI μμμλ μνΈ μμ©μ νμ§ λͺ»νκ³ λ©μΆ°λ²λ¦° νλ©΄λ§ λ³΄κ³ μκ² λ κ²μ΄λ€. μ¬μ§μ΄ μ΄λ° μ κ· ννμμ μλμ리λ₯Ό μ μ©νμ¬ μμ€ν μ λ©μΆκ² νλ ReDoSλΌλ 곡격 λ°©μλ μ‘΄μ¬νλ€.
λ°λ‘ μ΄λ° κ²½μ°κ° μ κ· ννμμ μλ μ리λ₯Ό μ λλ‘ μμ§ λͺ»νκ³ μ¬μ©νκ² λλ©΄ κ°λ λ§ λ³Ό μμλ μΌκ·Ό μν©μ΄λ€.
λ νλ±μ§κ° λλ 건 μ λ° μ κ· ννμμ μμ±ν΄λ κ·Έμ μν μκ°λ§ κΈ°νκΈμμ μΌλ‘ λμ΄λ λΏ μλ¬λ μλλΌλ κ²μ΄λ€. κ·Έλμ λ―Ώμλ μ κ· ννμνν
λ·ν΅μ λ§κΈ°κ° λ μ¬μ΄ μν©μ΄λ€. κ²λ€κ° μ΄λ° μ’
λ₯μ μλ¬λ μ§μ§ μ°ΎκΈ°λ νλ€λ€. (μ΄μ°μ΄μ° μ°Ύμμλ μ κ· ννμμ΄ μμΈμ΄λ κ±Έ μλ©΄ λμμ΄ λ§λ§ν΄μ§λ€β¦)

μ΄λ κ² λ°±νΈλνΉ μκ³ λ¦¬μ¦μ μ¬μ©νλ μ κ· ννμμ νΉμ± μ μ΄λ€ νμ κ³Όμ μ κ±°μΉλμ λ°λΌμ νΌν¬λ¨Όμ€κ° λ§μ΄ λ¨μ΄μ§ μλ μκΈ° λλ¬Έμ, μ κ· ννμμ μ¬μ©ν λλ μ΄λ° λ»νμ§ μμ μν©μ΄ λ°μν μλ μλ€λ κ²μ νμ μΌλμ λ¬μΌνλ€.
μ κ· ννμμΌλ‘λ ν΄κ²°ν μ μλ λ¬Έμ
κ·Έλ¦¬κ³ λ λ²μ§Έ λ·ν΅μ μν©μ μ κ· ννμλ§μΌλ‘λ μ λ ν΄κ²°ν μ μλ λ¬Έμ λ₯Ό μ κ· ννμμΌλ‘ ν΄κ²°νλ €κ³ νλ μν©μ΄λ€.
첫 λ²μ§Έ μν©μ νΌν¬λ¨Όμ€ λͺ¨λν°λ§μ ν΅ν΄ βμ κ· ννμμ΄ μ΄μνλ°?βλΌλ λ¬Έμ λΌλ μμλΌ μ μμ§λ§, μ΄ λ λ²μ§Έ μν©μ μ κ· ννμμ μ리μ νκ³λ₯Ό λͺ¨λ₯Έλ€λ©΄ μ§μ§ μΌμ£ΌμΌ λ΄λ΄ μ½μ§λ§ νλ©° μκ°λ§ λ 릴 μλ μλ μν©μ΄κΈ° λλ¬Έμ κ°μΈμ μΌλ‘λ μ΄ λ λ²μ§Έ μν©μ΄ μ‘°κΈ λ μ¬ν μν©μ΄λΌκ³ μκ°νλ€.
μλμμ λ€μ νμ νκ² μ§λ§, μ¬μ€ μ κ· ννμμ μΈμ λͺ¨λ λ¬Έμμ΄μ ν¨ν΄μ μ°ΎμλΌ μ μλ λ§λ₯ μ΄μ κ° μλλΌ μ€νλ € μ격ν νκ³κ° μ‘΄μ¬νλ λꡬμ΄λ€.
λνμ μΌλ‘ HTML, CSSμ κ°μ΄ 무ννκ² μ΄λ¦΄ μ μλ νκ·Έλ κ΄νΈκ° μ‘΄μ¬νλ μΈμ΄λ μ κ· ννμμΌλ‘ κ²μ¦μ΄ λΆκ°λ₯νλ€. κ·Έλμ μ΄ ν¬μ€ν μ μ λͺ©μ΄μλ βHTMLμ μ κ· ννμμΌλ‘ νμ±ν μ μμκΉ?βλΌλ μ§λ¬Έμ λν λλ΅μ λ°λ‘
.
.

λ§μ½ μ¬λ¬λΆμ΄ HTMLμ μ κ· ννμλ§μΌλ‘ νμ±νλ κ²μ λΆκ°λ₯νλ€λ μ¬μ€μ λͺ¨λ₯΄κ³ μμλ€λ©΄, μ λ ν΄κ²°ν μ μλ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λ§μ μκ°μ λ λ €λ¨Ήμ μλ μλ€λ κ²μ΄λ€.
κ·Έλ°λ° νμλ₯Ό ν¬ν¨ν λ§μ λΆλ€μ΄ νμμ μ κ· ννμμ μ¬μ©νμ¬ HTML νκ·Έκ° μ¬λ°λ₯΄κ² μ΄λ¦¬κ³ λ«νλμ§λ₯Ό κ²μ¬ν΄λ³Έ κ²½νμ΄ μλλ°, μ νμλ μ κ· ννμμΌλ‘ HTMLμ νμ±ν μ μλ€κ³ μ΄μΌκΈ°νλ κ²μΌκΉ?
κ·Έ μ΄μ λ₯Ό μκΈ° μν΄μλ μ κ· ννμμ΄λΌλ λκ΅¬κ° μ΄λ€ λ§₯λ½μμ κ°λ°λ κ²μΈμ§, μ΄λ€ νκ²½μμ ꡬλλλ κ²μ μ μ λ‘ νκ³ μλ κ²μΈμ§λ₯Ό μ΄ν΄λ³΄λ©° μ κ· ννμμ΄ κ°μ§κ³ μλ νκ³κ° 무μμΈμ§ μμλ΄μΌ ν νμκ° μλ€.
μ κ· ννμμ μ λ§λ€μ΄μ§ κ²μΌκΉ?
κ°λ°μλ€μκ² μ κ· ννμμ΄λΌλ λ¨μ΄λ μ΄λ―Έ μ΅μνλ€. κ°λ°μλ€ μ¬μ΄μμ μ κ· ννμμ μ€μλ§μΈ μ κ·μμ κ·μμ΄νμ²λΌ λ³νν΄μ λΆλ₯΄λ κ²μ΄ λ°μ΄ λ μ λμ΄κΈ°λ νλ λ§μ΄λ€.
νμ§λ§ μ κ· ννμμ΄ μ βμ κ· ννμβμ΄λΌλ μμν μ΄λ¦μΌλ‘ λΆλ¦¬λ μ§λ₯Ό κΆκΈν΄ νλ μ¬λμ κ·Έλ κ² λ§μ§ μλ€. κ·Έλ¬λ μ κ· ννμμ΄ μ νν μ΄λ€ μν μ νλ λꡬμΈμ§λ₯Ό μκΈ° μν 첫 κ±ΈμμΌλ‘ μ°λ¦¬μκ² μ΄λ―Έ μ΅μν μ΄ βμ κ· ννμβμ΄λΌλ μ΄λ¦μ μλ―ΈλΆν° νλ² μκ°ν΄λ³΄λλ‘ νμ.
μ κ·(ζ£θ¦)λΌλ λ¨μ΄μ μλ―Έλ κ·μΉμ μΈ λ¬΄μΈκ°, ν¨ν΄μ΄λ€. μ¦, μ κ· ννμ΄λΌλ κ²μ κ²°κ΅ λ§ κ·Έλλ‘ κ·μΉμ μΈ ν¨ν΄μ νννκ³ μλ€λ μλ―Έμ΄κΈ° λλ¬Έμ μ°λ¦¬λ μΌλ°μ μΌλ‘ μ κ· ννμμ΄ λ¬Έμμ΄μμ λ΄κ° μνλ ν¨ν΄μ λ§€μΉνλ λꡬλΌκ³ μκ³ μλ€.
μ΄ ν¨ν΄μ΄λΌλ λ¨μ΄λ 12121212
μ²λΌ λ¨μν λ°λ³΅λλ κ·μΉλ§μ μλ―Ένλ κ²μ΄ μλλΌ, μ°λ¦¬κ° μ κ· ννμμ μ¬μ©ν λ μ μνλ κ·μΉμ²λΌ βaκ° 2λ² λμ€κ³ κ·Έ λ€μ λ°λ‘ bκ° λνλλ€βμ κ°μ΄ μ¬μ©μκ° μ μνλ λͺ¨λ κ·μΉκΉμ§ ν¬ν¨νλ μλ―Έμ΄λ€.
μ΄μ²λΌ μ κ· ννμμ κ°μ₯ κΈ°λ³Έμ μΈ μ©λλ λ¬Έμμ΄ μμμ ν¨ν΄μ μ°Ύλ κ²μ΄μ§λ§, μ¬μ€ μ κ· ννμμ λ¨μν λ¬Έμμ΄μ ν¨ν΄μ μ°Ύμ μ μλ€λ λμ¦λ§μ μν΄μ λ§λ€μ΄μ§ κ²μ΄ μλλ€. κ·Έλ λ€λ©΄ μ κ· ννμμ λλ체 무μμ μν ν¨ν΄μ νννκ³ μλ κ²μΌκΉ?
κΈ°κ³κ° μμλ€μ μ μλ μΈμ΄λ₯Ό ννν΄λ³΄μ
μμ μ΄μΌκΈ°νλ―μ΄ μ κ· ννμμ μ΄λ€ ν¨ν΄μ νννκΈ° μν΄ νμ΄λ λꡬμ΄μ§λ§, μ¬μ€ μ κ· ννμμ νμ λ°°κ²½μ μ΄ν΄νλ €λ©΄ βμ λ¬Έμμ΄ λ΄μμ ν¨ν΄μ μ°ΎμΌλ €κ³ νλμ§βλ₯Ό μλ κ²μ΄ λ μ€μνλ€.
κ²°λ‘ λΆν° μ΄μΌκΈ°νμλ©΄ μ κ· ννμμ μμμ λ°λ‘ κΈ°κ³κ° μμλ€μ μ μλ μΈμ΄λ₯Ό νννκΈ° μν κ³ λ―ΌμμλΆν° μΆλ°νλ€. μ¦, κΈ°κ³κ° μΈμ΄λΌλ κ°λ μ μΈμ§ν μ μλλ‘ μΈμ΄λ₯Ό μνμ μΌλ‘ νννκΈ° μν΄ νμ΄λ κ°λ μ΄λΌλ κ²μ΄λ€.
λ¨, μ΄ μμ μ μ΄μΌκΈ°νλ κΈ°κ³κ° μμλ€μ μ μλ μΈμ΄λΌλ κ²μ μ€λ λ μ°κ΅¬νκ³ μλ κ²μ²λΌ μ¬λμ΄ μ¬μ©νλ μμ°μ΄ κ°μ κ³ μμ€μ μΈμ΄λ₯Ό μλ―Ένλ κ²μ λΉμ°ν μλλ€.
μ¬κΈ°μ μΈμ΄λΌκ³ νλ κ²μ νκ΅μ΄λ μμ΄ κ°μ μμ°μ΄κ° μλλΌ μ‘°κΈ λ μΆμμ μΈ μλ―Έμ΄λ€. νμμ μ°λ¦¬κ° μ¬μ©νλ νλ‘κ·Έλλ° μΈμ΄λ βμΈμ΄(Language)βλΌκ³ λΆλ₯΄λ κ²μ²λΌ μ»΄ν¨ν° κ³Όνκ³Ό μνμ μΈκ³μμ μΈμ΄λΌλ κ²μ λ¨μν μ΄λ€ νΉμ ν κ·μΉμ κ°μ§ λ¬Έμμ΄μ μ§ν©μ μλ―ΈνκΈ° λλ¬Έμ΄λ€.
μνμ μΌλ‘ μ μλ μΈμ΄μ μλ―Έ
μ°λ¦¬λ μΈμ΄λΌκ³ νλ κ²μ΄ 무μμΈμ§ λλμ μΌλ‘λ μκ³ μμ§λ§ μ νν μ΄κ² 무μμ΄λΌκ³ κ³ λ―Όν΄λ³Έ μ μ λ§μ΄ μμ κ²μ΄λ€.
νμ§λ§ μ»΄ν¨ν° κ³Όνμ΄λ μνμ μΈκ³μμλ μ΄λ° λλμ μΈ μ§μμ μ λ νμ©νμ§ μκΈ° λλ¬Έμ, μΈμ΄λΌλ κ°λ μ μ΄ μΈκ³μμ μ¬μ©νκ³ μΆλ€λ©΄ μΈμ΄κ° μ νν μ΄λ€ κ²μ΄λΌκ³ μ μνλ κ³Όμ μ΄ λ°λμ νμνλ€.
μ¬μ€ μνκ³Ό μ»΄ν¨ν° κ³Όνμμ μ μνλ μΈμ΄λΌλ κ²μ λ¨μνκ² μ΄λ€ λ¬Έμμ΄λ€μ μ§ν©μ μλ―Ένλ κ² κ·Έ μ΄μ κ·Έ μ΄νλ μλλ€.
νμ§λ§ λΉμ°νκ²λ μ무 λ¬Έμμ΄μ΄λ λ§ μ§μ΄λ£μ μ§ν©μ μλ―Ένλ κ²μ μλκΈ° λλ¬Έμ, μΈμ΄λ₯Ό ꡬμ±νλ λ¬Έμμ΄μ μ§ν©μ λ°λμ λ€μ 3κ°μ§ 쑰건μ λ§μ‘±ν΄μΌνλ€.
- μ νν κΈΈμ΄μ κΈ°νΈλ€μ μ§ν© Sκ° λ°λμ μ‘΄μ¬νλ€
- Sμ μμλ€λ‘ λ§λ λ¬Έμμ΄μ μ§ν©μΈ S*λ₯Ό νμ±νλ κ·μΉμ΄ λ°λμ μ‘΄μ¬νλ€
- κ·μΉμ λ§κ² λ§λ€μ΄μ§ λ¬Έμμ΄λ€μ΄ μ΄λ€ μλ―Έλ₯Ό κ°μ§λμ§ κ²°μ ν μ μλ€
μ¦, μ΄ 3κ°μ§ 쑰건μ λ§μ‘±νλ λ¬Έμμ΄μ μ§ν©μ μ λ§λ‘ κΈ°μ΄μ μΈ μΈμ΄λΌκ³ λΆλ₯Όλ§ν μκ²©μ΄ λλ κ²μ΄λ€. μ΄μ μΈμ΄μ μ μμ λν΄ μμμΌλ μ΄μ 1λ²λΆν° νλνλ λ§μ‘±μμΌλ³΄λ©΄μ μΈμ΄λ₯Ό λ§λ€μ΄λ³΄λλ‘ νμ.
μ°μ 첫 λ²μ§Έ μ‘°κ±΄μΈ κΈ°νΈλ€μ μ§ν© S
λ 무μμ μλ―Ένλ κ±ΈκΉ?
μ μκ°ν΄λ³΄λ©΄ μ§κ΅¬ μμ μ‘΄μ¬νλ λͺ¨λ μΈμ΄λ€μ κ·Έ μΈμ΄μμ μ¬μ©λλ κΈ°νΈλ€μ κ°μ§κ³ μλ€. νκΈμ γ±, γ΄, γ·
κ³Ό κ°μ μμκ³Ό γ
, γ
, γ
κ°μ λͺ¨μμ λνλ΄λ κΈ°νΈλ€, κ·Έλ¦¬κ³ μμ΄λ a, b, c
μ κ°μ κΈ°νΈλ€μ κ°μ§κ³ μλ κ² μ²λΌ λ§μ΄λ€. μ°λ¦¬λ μ΄λ° κΈ°νΈλ€μ λͺ¨μμ βμνλ²³βμ΄λΌκ³ λΆλ₯΄κ³ , λ°λ‘ μ΄ μνλ²³μ΄ μΈμ΄μ 첫 λ²μ§Έ μ‘°κ±΄μΈ κΈ°νΈλ€μ μ§ν© S
μ΄λ€.
κ·ΈλΌ νλ² μνλ²³μ μ ν΄λ³΄λλ‘ νμ. νμλ μ΄ μμμμ κ·Έλ₯ μλ°νκ² a, b
λΌλ κ°λ¨ν κΈ°νΈ 2κ°λ‘λ§ μνλ²³μ ꡬμ±νλ €κ³ νλ€.
S = ['a', 'b']
μ μ΄μ μΈμ΄μ 첫 λ²μ§Έ μ‘°κ±΄μΈ βμ νν κΈΈμ΄μ κΈ°νΈλ€μ μ§ν© S
βλ₯Ό λ§λ€μλ€. λ€μμΌλ‘λ βS
μ μμλ€λ‘ λ§λ λ¬Έμμ΄μ μ§ν©μΈ S*
βλ₯Ό λ§λ€ μ°¨λ‘μ΄λ€. λ λ²μ§Έ 쑰건μ 보면 μ΄ λ¬Έμμ΄μ μ§ν©μ νμ±νκΈ° μν΄μλ μ΄λ ν κ·μΉμ΄ νμνλ€κ³ νλ€.
κ·Έλ¦¬κ³ μ΄ κ·μΉμ΄ λ°λ‘ μ΄ μΈμ΄μ λ¬Έλ²(Syntax)λ₯Ό μλ―Ένλ€. μ§κ΅¬ μμλ κ°μ μνλ²³μ μ¬μ©νλ μΈμ΄κ° ν λκ°κ° μλκΈ° λλ¬Έμ, μ΄ λ λ²μ§Έ κ·μΉ, μ¦ λ¬Έλ²μ΄ μ΄ μΈμ΄μ νΉμμ λ§λ€μ΄λΈλ€.
[κ°μ λΌν΄ μνλ²³μ μ°μ§λ§ λ¬Έμμ΄μ μ‘°ν©νλ κ·μΉμ΄ λ€λ¦]
μμ΄: I love you
νλμ€μ΄: je t'aime
μ΄ν리μμ΄: ti amo
μ μμμμ λ³Ό μ μλ―μ΄ μμ΄μμ μ¬μ©λλ λΌν΄ μνλ²³μ νλμ€μ΄λ μ΄ν리μμ΄μμλ λλΆλΆ μ¬μ©λκ³ μλ€. λκ°μ΄ βμ¬λβμ΄λΌλ μλ―Έλ₯Ό κ°μ§ λ¨μ΄λΌκ³ ν΄λ μμ΄λ love
λΌλ 4κ°μ μνλ²³μ΄ μ‘°ν©λ λ¬Έμμ΄λ‘ νννκ³ , νλμ€μ΄λ l'amour
λΌλ '
λ₯Ό ν¬ν¨νμ¬ 7κ°μ μνλ²³μ΄ μ‘°ν©λ λ¬Έμμ΄λ‘ ννν μ μλ κ²μ μκ°ν΄λ³΄λ©΄ λλ€.
κ·Έλμ μνλ²³λ§ μ μνλ€κ³ ν΄μ μ΄λ€ μΈμ΄λ₯Ό μ μνλ€κ³ λ§νκΈ°κ° μ΄λ ΅λ€λ κ²μ΄λ€. νμλ μ΄ λ¬Έμμ΄μ μ§ν© S*
μ κ·μΉμ βμνλ²³ a
μ b
λ‘ λ§λ€ μ μλ λͺ¨λ 3μ리 μ΄νμ κΈμβλΌκ³ μ νλλ‘ νκ² λ€. κ·ΈλΌ νμκ° λ§λ€κ³ μλ μ΄ μΈμ΄λ₯Ό ꡬμ±νλ λ¬Έμμ΄μ μ§ν© S*
λ μ΄λ° λͺ¨μμ΄ λ κ²μ΄λ€.
S* = [
"",
"a", "b",
"aa", "ab", "ba", "bb",
"aaa", "aab", "aba", "abb",
"baa", "bab", "bba", "bbb",
]
μ΄μ λ λ²μ§Έ μ‘°κ±΄μΈ βS
μ μμλ€λ‘ λ§λ λ¬Έμμ΄μ μ§ν©μΈ S*
λ₯Ό νμ±νλ κ·μΉβλ μ μνκ³ λλ νμμ μΈμ΄κ° μ΄λ€ λ¬Έμμ΄λ€μ ν¬ν¨νκ³ μλ μ§ν©μΈμ§ μ μ μκ² λμλ€. μ¬κΈ°κΉμ§ μ€κ³ λλ©΄ μ¬μ€ λ§μ§λ§ 쑰건μ μλμΌλ‘ μΆ©μ‘±λλ€.
νμκ° S*
μ κ·μΉμΌλ‘ μ μν μ‘°κ±΄μΈ βμνλ²³ a
μ b
λ‘ λ§λ€ μ μλ λͺ¨λ 3μ리 μ΄νμ κΈμβλ μ νν κ°μμ λ¬Έμμ΄μ μμλ§ λ§λ€ μ μκΈ° λλ¬Έμ, μ΄λ κ² λ§λ€μ΄μ§ λͺ¨λ λ¬Έμμ΄μ μλ―Έλ₯Ό κ°κ° λΆμ¬ν΄μ£Όλ κ²μ΄ κ°λ₯νκΈ° λλ¬Έμ΄λ€.
a = λ°°κ° κ³ νμ
b = ν΄κ·Όνκ³ μΆμ΄μ
aa = μλ²μμ 500μ΄ λ¨μ΄μ Έμ
...
νμλ μ΄λ κ² λ¨ 5λΆ λ§μ μΈμ΄μ 쑰건 3κ°λ₯Ό λͺ¨λ μΆ©μ‘±μμΌμ νμ ν μΈμ΄λ₯Ό λ§λ€μ΄λΌ μ μμλ€. μμΌλ‘μ μ€λͺ μμ μ΄ μΈμ΄λ βμλ°μ΄βλΌκ³ λΆλ₯΄λλ‘ νκ² λ€.
κΈ°κ³μΌ λ΄ μΈμ΄λ₯Ό μ΄ν΄ν΄μ€
μ¬μ€ μ΄λ€ μΈμ΄λ₯Ό λ§λλ κ·μΉ μ체λ λ¨μνκΈ° λλ¬Έμ λꡬλΌλ μλ°μ΄μ²λΌ νμ ν μΈμ΄λ₯Ό λ§λ€μ΄λΌ μλ μλ€. κ·Έλ°λ° λ¬Έμ λ μ΄ μΈμ΄λ₯Ό κΈ°κ³κ° μ΄ν΄ν μ μλλ κ²μ΄λ€.
κ²°κ΅ μ΄λ€ κΈ°κ³κ° μΈμ΄λ₯Ό μ΄ν΄ν μ μλ€λ κ²μ μ΄ μΈμ΄λ₯Ό ꡬμ±νλ λ¬Έμμ΄μ νΉμ ν ν¨ν΄μ΄ μμ΄μΌ νλ€λ μλ―Έμ΄λ€. μ¦, μΈμ΄λ₯Ό ꡬμ±νλ λ¬Έμμ΄μ ν¨ν΄μ μνμ μΌλ‘ ννν μλ§ μλ€λ©΄ μ΄ μΈμ΄λ κΈ°κ³κ° μ΄ν΄ν μ μλ μΈμ΄λΌκ³ μ΄μΌκΈ°ν μ μλ κ²μ΄λ€.
λ¬Όλ‘ κ°μ μΈμ΄λΌκ³ ν΄λ μ°λ¦¬κ° μΌμ μμμ μ¬μ©νλ νκ΅μ΄, μμ΄μ κ°μ μμ°μ΄λ λ¬Έλ§₯μ΄ κ΅μ₯ν μμ λ‘κ³ μλμ νλ¦μ λ°λΌ λ¬Έλ²μ΄λ μλ―Έκ° λ³κ²½λλ μΌλ μκΈ° λλ¬Έμ μ λμ μΈ ν¨ν΄μ΄λΌλ κ²μ΄ μ‘΄μ¬ν μ μλ€. νμ§λ§ νμκ° λ°©κΈ λ§λ μλ°μ΄μ²λΌ λ¬Έμμ΄λ€μ ꡬμ±νλ κ·μΉμ΄ λͺ ννλ€λ©΄ μ΄κ²μ κΈ°κ³κ° μ΄ν΄ν μ μλ μΈμ΄κ° λλ€.
νμκ° λ§λ μλ°μ΄λ aμ bλ‘ μ΄λ£¨μ΄μ§ 3μ리 μ΄νμ λ¬Έμμ΄μ΄λΌλ λͺ νν κ·μΉμ΄ μ‘΄μ¬νκΈ° λλ¬Έμ μ΄λ κ² μμμΌλ‘ νννλ κ²μ΄ κ°λ₯νλ€.
μλ°μ΄λ βa, bλ‘ λ§λ€ μ μλ 3μ리 μ΄νμ λ¬Έμμ΄βμ μ§ν©μΌλ‘ ꡬμ±λμ΄ μλ μΈμ΄μ΄κΈ° λλ¬Έμ λΉ λ¬Έμμ΄ λν μ΄ κ·μΉμ ν¬ν¨λλ€. κ·Έλμ μμμμλ λΉ λ¬Έμμ΄μ λ»νλ (μ±μ€λ‘ )μ κ° μ리λ§λ€ λν΄μ£Όλ λ°©μμΌλ‘ ννν΄μΌνλ©°, μ μμ΄ νννλ λ¬Έμμ΄μ μ§ν©μΌλ‘ ꡬμ±λ μΈμ΄, μλ°μ΄λ λΉ λ¬Έμμ΄μΈ μ ν¬ν¨νκ³ μλ€.
κ·Έλ¦¬κ³ μ΄ μμμ κΈ°κ³κ° μμλ€μ μ μκ² νΉμ ν μΈμ΄λ‘ λ°κΏμ€ κ²μ΄ λ°λ‘β¦
^[ab]{0,3}$
μ°λ¦¬κ° μΌλ°μ μΌλ‘ μκ³ μλ μ κ· ννμμΈ κ²μ΄λ€.
μ¦, κΈ°κ³κ° μΈμ΄λ₯Ό μΈμ§νκΈ° μν 첫 λ²μ§Έ λ°κ±Έμμ μΈμ΄λ₯Ό ꡬμ±νλ λ¬Έμμ΄μ΄ μμ±λλ βκ·μΉβμ ννν μ μλ λ°©λ²μ λ§λλ κ²μ΄κ³ , μ΄κ² λ°λ‘ μ κ· ννμμ κΈ°μμ΄λ€. μν€νΌλμμ μ κ· ννμ νλͺ©μ 보면 μ΄ λ§₯λ½μ΄ μ κ· ννμμ μ μμ κ·Έλλ‘ λ Ήμμλ κ²μ λ³Ό μ μλ€.
μ κ· ννμ(ζ£θ¦θ‘¨ηΎεΌ, μμ΄: regular expression, κ°λ¨ν regexp[1] λλ regex, rational expression)[2][3] λλ μ κ·μ(ζ£θ¦εΌ)μ νΉμ ν κ·μΉμ κ°μ§ λ¬Έμμ΄μ μ§ν©μ νννλ λ° μ¬μ©νλ νμ μΈμ΄μ΄λ€.
λ¬Όλ‘ νμκ° μ΄ ν¬μ€ν μμ μ€λͺ νκ³ μλ μΈμ΄μ μ μλ κ΅μ₯ν λ¨νΈμ μΈ λ΄μ©μ μ΄μΌκΈ°νκ³ μλ κ²μ΄λ―λ‘, μ΄ λΆλΆμ λν΄ λ κ΄μ¬μ΄ μμΌμ λΆλ€μ βνμ μΈμ΄β, βμ΄μ€ν€ μκ³β λ±μ ν€μλλ‘ κ΅¬κΈλ§μ νλ² ν΄λ³΄λ κ²μ κΆνλ€.
μ κ· ννμμ΄ κ΅¬λλλ νκ²½, μ ν μ€ν λ§ν
μ°λ¦¬λ μ΄μ μ κ· ννμμ΄λΌλ κ²μ΄ λ¨μν λ¬Έμμ΄μ ν¨ν΄μ νννκΈ° μν μΈμ΄κ° μλλΌ, μΈμ΄λ₯Ό κΈ°κ³μκ² μΈμ§μν€κΈ° μν λ Έλ ₯μ κ³Όμ λμ νμ΄λ κΈ°μ μ΄λΌλ κ²μ μκ² λμλ€. κ·Έλ°λ° νμκ° μκΉλΆν° βκΈ°κ³βλΌλ λ§μ κ³μ νκ³ μλλ°, μ΄ κΈ°κ³λ λλ체 무μμ λ§νλ κ²μΌκΉ?
μ°Έκ³ λ‘ μ κ· ννμμ΄λΌλ κ°λ μ΄ νμ΄λ λ λλ 1951λ μ΄λ€. λ¬Όλ‘ μ΄ λΉμμλ μ»΄ν¨ν°λΌλ κ²μ΄ μκΈ°λ νμ§λ§ μ»΄ν¨ν°μ λ©λͺ¨λ¦¬λ‘ μμμ μ°λ€ μκΈ°μ½μ΄λ₯Ό μ°λ€ μ΄μ©λ€νλ μ§νλ Έλμ μκΈ°μκΈ° λλ¬Έμ, νμ¬ μ°λ¦¬κ° μΌλ°μ μΈ νλ‘κ·Έλ¨μ μμ±ν λμ²λΌ λ©λͺ¨λ¦¬μ νκ³μ±μ λν ν° κ±±μ μμ΄ μ½λ©νλ μλλ μλμλ€.
κ·Έλμ μ΄ μκΈ°μ κΈ°κ³λ₯Ό λμμΌλ‘ νλ μ°κ΅¬λ μ°λ¦¬κ° μκ°νλ μ»΄ν¨ν°κ° μλλΌ κ·Έλ₯ κ³μ° λ₯λ ₯μ΄ μλ κΈ°κ³λ₯Ό λ¨Έλ¦Ώ μμΌλ‘ μμν΄μ μ§ννλ κ²½μ°κ° λ§μλ€. (본격 μμμ½λ©μ μμ‘°β¦)

κ·Έ μ€μμλ μ κ· ννμμ μ ν μ€ν λ§νλΌλ μΆμ κΈ°κ³κ° μμλ€μ μ μλ μΈμ΄λ₯Ό νννλ μ°κ΅¬μμ νμλ μ΄λ‘ μ΄λ€.
μ€ν λ§νλ μλ(Auto) κΈ°κ³(Mata)λΌλ μλ―ΈμΈλ°, μ΄κ±΄ λ§ κ·Έλλ‘ μλνλ μΆμμ μΈ κΈ°κ³μ΄κΈ° λλ¬Έμ λ°λμ μ»΄ν¨ν°μ²λΌ 물리μ μΈ μ₯μΉκ° νμν κ²μ μλλ€. κ·Έλ₯ μ΄λ‘ μ΄λ μ€κ³λ‘λ§ μ‘΄μ¬ν μλ μλ€λ κ²μ΄λ€.
μ΄λ κ² μ€ν λ§νλ₯Ό μ°κ΅¬νλ νλ¬Έμ κ·Όλ³Έμ μΌλ‘ μ΄λ€ κΈ°κ³κ° ν μ μλ κ²μ 무μμ΄κ³ ν μ μλ κ²μ 무μμΈμ§μ λν ν΄λ΅μ μ°Ύλ νλ¬Έμ΄κΈ° λλ¬Έμ, νμ¬ μ°λ¦¬κ° 곡λΆνλ μ»΄ν¨ν° κ³Όνμ λͺ¨νκ° λλ νλ¬Έμ΄λΌκ³ λ λ³Ό μ μλ€.
κ·Έ μ€μμλ μ ν μ€ν λ§νλ κ°λ¨νκ² μκΈ°ν΄μ μ ν κ°μ μν μ€ ν λ²μ νλμ μνλ§μ κ°μ§ μ μλ κΈ°κ³μ΄λ€. μ ν μ€ν λ§νλ₯Ό μ€κ³ν λλ λ€μ΄μ΄κ·Έλ¨μ μ¬μ©νμ¬ μ€ν λ§νμ μνκ° λ³κ²½λλ κ³Όμ μ κ·Έλ¦ΌμΌλ‘ λνλ΄κ² λλλ°,λμΆ© μ΄λ° λλμ΄λ€.
μ μν μ μ΄λλ μ ν μ€ν λ§νμ μνκ° μ΄λ»κ² λ³κ²½λλ μ§λ₯Ό ννν κ²μΈλ°, μ΄ κΈ°κ³λ μΈνμΌλ‘ μ΄λ€ λ¬Έμμ΄μ λ°μμ μ΄ λ¬Έμμ΄μ΄ a
λΌλ©΄ μν1λ‘ λ³κ²½λλ©°, κ·Έ μ΄νμ μ€λ λ¬Έμμ΄μ΄ b
λΌλ©΄ μν2λ‘ λ³κ²½λλ κ°λ¨ν κΈ°κ³μ΄λ€. κ·Έλ¦¬κ³ μν2λ μ΄ κΈ°κ³κ° λ³κ²½ν μ μλ μ΅μ’
μνμ΄κΈ° λλ¬Έμ κ²Ήλκ·ΈλΌλ―Έλ‘ ννν΄μ£Όμλ€.
κ²°κ΅ μ΄ κΈ°κ³κ° μΈνμΌλ‘ μ΄λ€ λ¬Έμμ΄μ λ°μ νμ μνκ° λκΉμ§ λμκ°λ€λ©΄ ab
, aab
, aaa...b
λ±μ λ¬Έμμ΄μ΄λΌλ κ²μ΄ 보μ₯λλ κ²μ΄λ€. κ·Έλ¦¬κ³ μ΄ κΈ°κ³λ a+b
μ΄λΌλ μ κ· ννμμΌλ‘λ ννν μ μλ€. μ¦, νμκ° κ·Έλ¦° κΈ°κ³μ a+b
λΌλ μ κ· ννμμ κ°λ
μ μΌλ‘ κ°μ κ²μ΄λ©°, μ΄ μ κ· ννμμ μμ κΈ°κ³λ₯Ό νννλ€κ³ λ΄λ 무방νλ€. (μ ν μ€ν λ§νμ μ κ· ννμ λμΉκ΄κ³λΌκ³ λ νννλ€)
μ΄λ κ² μ΄λ€ μνμμ λ€λ₯Έ μνλ‘ λ³κ²½λ μ μλ κΈΈμ΄ νλ λ°μ μλ κΈ°κ³λ μμ μν μ μ΄λ κ·Έλ¦Όλ§ λ΄λ μ΄ κΈ°κ³κ° μ΄λ»κ² μλν μ§ λ¨λ²μ μ μ μλ€. κ·Έ μ΄μ λ μ΄λ€ μνμμ λ€μ μνλ‘ λμκ° μμλ κΈΈμ΄ λ¨ νλλ§ μ‘΄μ¬νκΈ° λλ¬ΈμΈλ°, μ΄λ° μ ν μ€ν λ§νλ μνκ° λ³κ²½λλ κΈΈμ΄ μ΄λ―Έ λ€ κ²°μ λμ΄μλ€κ³ ν΄μ κ²°μ μ μ ν μ€ν λ§ν(Deterministic Finite Automaton, DFA)λΌκ³ λΆλ¦°λ€.
DFAλ μ΄μ²λΌ κ΅¬μ‘°κ° κ°κ²°νκ³ κΈ°κ³μ μνλ₯Ό λͺ¨λ μμΈ‘ κ°λ₯νκΈ° λλ¬Έμ νλ‘κ·Έλ¨μΌλ‘ μμ±νκΈ°λ νΈνκ³ ν¨μ¨λ μ λμ€μ§λ§ ν κ°μ§ λ¨μ μ΄ μ‘΄μ¬νλ€.

μ΄κ² μ μ΄λ €μ΄ κ±ΈκΉ? λ¬Όλ‘ λ°©κΈ νμκ° μμλ‘ λ€μλ a+b
λΌλ κ°λ¨ν μ κ· ννμμ΄λΌλ©΄ μν μ μ΄λλ DFAλ‘ κ°λ¨νκ² κ·Έλ €λΌ μ μμ§λ§ λ§μ½ ORλ₯Ό μλ―Ένλ (a|b)b
κ°μ μ κ· ννμμ DFAλ‘ νννλ €κ³ νλ©΄ μκ°λ³΄λ€ λΉ‘μΈλ€. DFAλ μ΄λ€ μΈνμ λ°μμ λ λ³κ²½λ μ μλ μνκ° λ¬΄μ‘°κ±΄ ν κ° λΏμ΄μ΄μΌ νκΈ° λλ¬Έμ΄λ€. μ΄κ±΄ λ§μΉ if
λ¬Έ μμ΄ μ‘°κ±΄μ μ²λ¦¬ν΄μΌ νλ μν©μ΄λκΉ.
μ΄λ° μ΄μ λ‘ μΈμ΄λ₯Ό μΈμνλ κΈ°κ³λ₯Ό ννν λλ λ³κ²½λ μ μλ μνκ° λ°λμ ν κ°λ§ μ‘΄μ¬νλ DFAκ° μλ μ¬λ¬ κ°λ μ‘΄μ¬ν μ μλ κΈ°κ³λ₯Ό νννκ² λλλ°, μ΄λ° κΈ°κ³λ μ΄λ€ μΈνμ΄ λ€μ΄μ€λμ λ°λΌμ λ³κ²½λ μνκ° λ³κ²½λκΈ° λλ¬Έμ μν μ μ΄λλ§ λ΄μλ μ΄ κΈ°κ³κ° μ΄λ»κ² μλν μ§ μμΈ‘νλ κ²μ΄ λΆκ°λ₯νλ€.

κ·Έλ¦¬κ³ μ΄λ° κΈ°κ³λ μ΄λ€ μνμμ λ€μ μνλ‘ λμκ°λ κΈΈμ΄ λ―Έλ¦¬ κ²°μ λμ΄μλ κ²μ΄ μλλΌ μΈνμ λ°λΌ κΈΈμ΄ λ³κ²½λκΈ° λλ¬Έμ λΉκ²°μ μ μ ν μ€ν λ§ν(Nondeterministic Finite Automata, NFA)λΌκ³ νλ€.
μ κΈ°κ³λ λΉ λ¬Έμμ΄μ μλ―Ένλ μ λ°μλ€μ΄λ κ²μΌλ‘ μμνμ¬, κ·Έ λ€μ λ¬Έμμ΄μ΄ a
λΌλ©΄ μν2λ‘, b
λΌλ©΄ μν3μΌλ‘ λ³κ²½λλ ꡬ쑰λ₯Ό κ°μ§κ³ μλ€. μ¦, μ΄λ€ μνμμ λ€λ₯Έ μνλ‘ λ³κ²½λ μ μλ κ°μκ° 2κ° μ΄μμΈ κ²μ΄λ€. μ¦, μ΄ κΈ°κ³λ μΆμ μ μ΄λλ§ λ΄μλ νΉμ μνμ λ€μ μνκ° λ¬΄μμ΄ λ μ§ μ μκ° μκΈ° λλ¬Έμ βλΉκ²°μ βμ μ ν μ€ν λ§νλΌκ³ λΆλ¦¬λ κ²μ΄λ€.
μ΄κ² λ°λ‘ μ κ· ννμμ΄ κ΅¬λλλ κΈ°κ³μΈ μ ν μ€ν λ§νμ λλ΅μ μΈ κ°λ μ΄λ©°, μ κ· ννμμ λ°λ‘ μ΄λ° κ°λ μ μΆμ κΈ°κ³μκ² μΈμ΄λ₯Ό μΈμ§μν€λ κ²μ λͺ©νλ‘ λ§λ€μ΄μ‘λ€. μ¬κΈ°μ λΆλͺ ν μ§κ³ λμ΄κ°μΌ ν μ μ μ΄ μ ν μ€ν λ§νλΌλ κΈ°κ³λ βκΈ°μ΅ν μ μλ μνκ° λ¨ νλ λ°μ μλ€λ κ²βμ΄λ€.
λ°λ‘ μ΄ μ μ½ μ‘°κ±΄μΌλ‘ μΈν΄μ μ κ· ννμμ΄λΌλ μΈμ΄μ νκ³κ° λ°μνκ² λλ€.
μ κ· ννμμ νκ³
μ΄μ²λΌ μ κ· ννμμΌλ‘ ννν μ μλ μΈμ΄, μ¦ μ ν μ€ν λ§νκ° μ΄ν΄ν μ μλ μΈμ΄λ₯Ό μ κ· μΈμ΄(Regular Language)
λΌκ³ λΆλ₯Έλ€.
μμ μμ보μλ―μ΄ μ μ΄μ μ κ· ννμμ μνμ μΌλ‘ ννν μ μλ κ·μΉμ΄ μ‘΄μ¬νλ μΈμ΄λ₯Ό νννλ μ©λμΈλ°λ€κ° ν λ²μ ν κ°μ§ μνλ§ κ°μ§ μ μλ μ ν μ€ν λ§νμμ ꡬλλλ κ²μ μ μ λ‘ νκΈ° λλ¬Έμ λͺ¨λ μΈμ΄λ₯Ό λ€ ννν μ μλ κ²μ΄ μλλ€.
μ½κ² μκ°ν΄μ μ κ· ννμμΌλ‘ λ¬Έλ§₯μ΄ κ΅μ₯ν μμ λ‘μ΄ νκ΅μ΄λ μμ΄κ°μ μΈμ΄λ μ κ· ννμμΌλ‘ ννν μ μλ κ²μ μκ°ν΄λ³΄λ©΄ λλ€. (μ μ΄μ μμ°μ΄λ₯Ό μ κ· ννμμΌλ‘ ννν μ μμμΌλ©΄ λ¨Έμ λ¬λμ μ°μ§λ μλλ€)
μ¦, μ κ· ννμμΌλ‘ ννν μ μλ μΈμ΄μλ λΆλͺ ν νκ³κ° μλ€λ κ²μ΄λ©°, μ΄λ κ² μ κ· ννμμΌλ‘ ννν μ μλ μΈμ΄λ₯Ό μ κ· μΈμ΄λΌκ³ λΆλ₯΄λ κ²μ΄λ€.
μ¬μ€ μ°λ¦¬κ° μΌλ°μ μΈ λΉμ¦λμ€ λ 벨μμ λ€λ£¨λ λ¬Έμμ΄λ€ μ€μλ μ κ· μΈμ΄κ° μλ κ²λ€μ΄ κ½€λ μ‘΄μ¬νλλ°, κ·Έ μ€ λνμ μΈ κ²μ΄ λ°λ‘ HTML
κ°μ μΈμ΄μ΄λ€. μ¦, μ΄λ€ λ¬Έμμ΄μ΄ μ λλ‘ λ HTMLμΈμ§ μλμ§λ₯Ό μ κ· ννμμΌλ‘ μμλ΄λ κ²μ λΆκ°λ₯νλ€λ κ²μ΄λ€.

λ¬Όλ‘ νμλ μ κ· ννμμΌλ‘ HTMLμ λ§€μΉν΄λ³Έ κ²½νμ μλ€. νμ§λ§ μλ§ μ°λ¦¬κ° λΉμ HTMLμ λ§€μΉν λμ κ·μΉμ μ 체 HTMLμ΄ μ ν¨νμ§ μλμ§κ° μλλΌ β<div>
νκ·Έκ° μ΄λ Έλ€κ° λ«νμ΄?βμ κ°μ HTMLμ μΌλΆλΆμ κ²μ¦νλ μμ κ·μΉμ΄μμ κ²μ΄λ€.
κ·Έλ λ€λ©΄ μ νμλ μ κ· ννμμΌλ‘ HTMLμ μ ν¨μ±μ κ²μ¦ν μ μλ€κ³ ν κ²μΌκΉ? κ·Έ λ΅μ μ κ· ννμμ΄ μ¬μ€μ μνλ₯Ό νλλ§ κΈ°μ΅ν μ μλ μ ν μ€ν λ§νλ₯Ό νννκ³ μλ€λ κ²μ μκ°νλ©° HTMLμ μκΉμλ₯Ό 보면 μ½κ² μ μκ° μλ€.
μ κ· ννμμ΄ HTMLμ μ΄ν΄νμ§ λͺ» νλ μ΄μ
νμλ μκ³ μ¬λ¬λΆλ μκ³ λͺ¨λκ° μλ€μνΌ HTMLμ μ΄λ€ νκ·Έκ° μ΄κ³ λ«νλ©° κ·Έ λ΄λΆμλ 무νν νκ·Έκ° μ€μ²©λ μ μλ ꡬ쑰λ₯Ό κ°μ§κ³ μλ€.
<main>
<section>
<h1>
...
</h1>
</section>
</main>
κ·Έλ λ€λ©΄ λ§μ½ μ΄λ€ κΈ°κ³κ° μ΄λ° HTML λ¬Έμμ΄μ μΈνμΌλ‘ λ°μμ λ, μ΄ HTMLμ΄ μ ν¨νλ€λ κ²μ κ²μ¦ν΄λ΄λ €λ©΄ μ΄λ»κ² ν΄μΌν κΉ?
μ¬λ°λ₯Έ HTMLμ΄λΌκ³ λΆλ₯Ό μ μλ λ¬Έμμ΄μ λ°λμ μ¬λ νκ·Έμ λ«λ νκ·Έκ° ν¨κ» μ‘΄μ¬ν΄μΌνλ€. μ¦, νκ·Έκ° νλ² μ΄λ ΈμΌλ©΄ 무쑰건 λ«νμΌ νλ€λ κ²μ΄λ€. κ²°κ΅ μ¬λ°λ₯Έ HTMLμ νλ³νλ κΈ°κ³λ λ¬Έμλ₯Ό νλμ© μ½μΌλ©΄μ κ·Έμ λμμ νκ·Έμ μ΄κ³ λ«μμ μ μ μμ΄μΌ νλ€λ κ²μ΄κ³ , λμΆ© μ΄λ° λλμΌλ‘ μλν κ²μ΄λ€.
<main>
λ¬Έμμ΄μ λ§λ¬λ€. μ΄ν<main>
νκ·Έκ° μ΄λ Έλ€λ μνλ₯Ό μ μ₯νλ€.<section>
λ¬Έμμ΄μ λ§λ¬λ€. μ΄ν<section>
νκ·Έκ° μ΄λ Έλ€λ μνλ₯Ό μ μ₯νλ€.- β¦λ°λ³΅
</main>
λ¬Έμμ΄μ λ§λ¬λ€. λ§μ½<main>
νκ·Έκ° μ΄λ¦° μνκ° μ μ₯λμ΄μλ€λ©΄ μ¬λ°λ₯΄κ² λ«νλ€κ³ νλ¨νλ€.</section>
λ¬Έμμ΄μ λ§λ¬λ€. λ§μ½<section>
νκ·Έκ° μ΄λ¦° μνκ° μ μ₯λμ΄μλ€λ©΄ μ¬λ°λ₯΄κ² λ«νλ€κ³ νλ¨νλ€.- λ¬Έμμ΄μ λκΉμ§ νμνμ λ μ΄λ¦° μνλ‘ λλ νκ·Έκ° μλ€λ©΄ μ΄ HTMLμ μ¬λ°λ₯Έ HTMLμ΄λ€.
μ¬λ¬λΆμ΄ λ§μ½ μ΄λ° κΈ°κ³λ₯Ό λ§λ λ€κ³ μκ°ν΄λ³΄μ. μ΄ κΈ°κ³λ λͺ κ°μ μνλ₯Ό μ μ₯ν μ μλλ‘ μ€κ³λμ΄μΌν κΉ?
.
.
λ΅μ 무νλμ΄λ€
νΉμ¬λ μ μ΄ν΄κ° κ°μ§ μλλ€λ©΄, μ¬λ¬λΆμ΄ μ§μ HTML νμλ₯Ό λ§λ λ€κ³ μμν΄λ³΄μ. μμ λ§νλ―μ΄ μ΄ νμλ νκ·Έκ° μ΄λ¦¬κ³ λ«νλ€λ μ¬μ€μ κ²μ¦ν΄μΌ νκΈ° λλ¬Έμ, λ¬Έμμ΄μ μμ°¨μ μΌλ‘ νμνλ©΄μ μ΄λ€ νκ·Έκ° μ΄λ¦° κ²μ μλ―Ένλ λ¬Έμμ΄μ λ§λ¬λ€λ©΄ μ΄ μνλ₯Ό μ΄λκ°μ μ μ₯ν΄λμμΌ νλ€.
μ΄λ μ΄λ€ λ°©μμΌλ‘ μνλ₯Ό κ΄λ¦¬νλμ§λ μ¬λλ§λ€ μ‘°κΈμ© λ€λ₯Ό μ μμ§λ§ μ΄λ κ² μμΌλ‘ μ΄λ Έλ€ λ«νλ κ΄νΈλ₯Ό κ²μ¦ν λμ μ μμ μ€ν(Stack)μ μ¬μ©νλ λ°©λ²μ΄λ€.
닫는 태그를 만났을 때 Pop하는 동작만 사용해도 허접한 HTML 파서는 구현 가능하다
νκ·Έκ° μ무리 μ€μ²©λμ΄λ λ°λμ μ μͺ½μ μλ νκ·Έκ° λ¨Όμ λ«ν μ λ°μ μλ HTML ꡬ쑰λ₯Ό κ²μ¦νκΈ°μλ λ§μ§λ§μ λ€μ΄μ¨ λ μμ΄ λ°λμ λ¨Όμ λκ°μΌ νλ μ€νμ΄ μμ£Ό μ°°λ‘κΆν©μ΄κΈ° λλ¬Έμ΄λ€.
νμ§λ§ μ¬κΈ°μ λ¬Έμ λ λ°λ‘ μ€νμ ν¬κΈ°μ΄λ€. μ΄ μ€νμ ν¬κΈ°λ₯Ό μΌλ§λ ν¬κ² μ‘μμΌ μ΄λ€ λ¬Έμμ΄μ΄λ μνν μ μλ HTML νμλ₯Ό λ§λ€ μ μμκΉ?
λΉμ°ν ν¬λ©΄ ν΄μλ‘ μ’λ€. μ€νμ ν¬κΈ°κ° ν¬λ©΄ ν΄ μλ‘ λ κΉμ κΉμ΄μ νΈλ¦¬λ‘ μ΄λ£¨μ΄μ§ HTMLλ νμ±ν μ μκΈ° λλ¬Έμ΄λ€. νμ§λ§ κ²°κ΅ μ΄ μ€νμ ν¬κΈ°λ₯Ό μ΄κ³Όνλ νΈλ¦¬λ₯Ό κ°μ§ HTMLμ΄ νμμ λ€μ΄μ€λ©΄ νλ‘κ·Έλ¨μ ν°μ§ μ λ°μ μλ€. μ¦, μ΄λ€ λ¬Έμμ΄μ΄λ μνν μ μλ HTML νμλ₯Ό λ§λλ €λ©΄ μ€νμ ν¬κΈ°λ₯Ό 무ννκ² μ‘μμΌνλ€.
μ κ· ννμμ κ²°κ΅ μ ν μ€ν λ§νμ΄λ€
μ΄μ²λΌ μ΄λ ν κΈ°κ³κ° HTMLμ΄ μ¬λ°λ₯Έμ§ μλμ§λ₯Ό κ²μ¦νκΈ° μν΄μλ 무ν κ°μ μνκ° νμνλ€. νμ§λ§ μ κ· ννμμ λ¨ ν κ°μ μνλ§μ κ°μ§λ μ ν μ€ν λ§νλ₯Ό ννν κ²μ΄κΈ° λλ¬Έμ λΉμ°ν 무ν κ°μ μνλ₯Ό κ°μ ΈμΌ νμ±ν μ μλ HTMLμ μ λ μΈμ§ν μκ° μλ κ²μ΄λ€.
κ²°κ΅ ν΅μ¬μ μ κ· ννμμ΄ μνλ₯Ό νλ λ°μ κ°μ§ μ μλ μ ν μ€ν λ§νλ₯Ό νννκ³ μλ€λ κ²μ΄λ©°, μνλ₯Ό νλ λ°μ κ°μ§ μ μλ κΈ°κ³λ‘λ μ λ ν΄κ²°ν μ μλ λ¬Έμ κ° μ‘΄μ¬νλ€λ κ²μ΄λ€.
κ·Έλ¬λ μ΄λ€ λ¬Έμμ΄μ 보면 λ°λ‘ μ κ· ννμμΌλ‘ ν΄κ²°νλ €κ³ λ€λΉκΈ°λ³΄λ€λ λ΄κ° μ΄ λ¬Έμμ΄μ νμ±νλ νλ‘κ·Έλ¨μ λ§λ λ€κ³ μκ°ν΄λ³΄μμλ βλͺ κ°μ μνβκ° νμν μ§λ₯Ό λ¨Όμ κ³ λ―Όν΄λ³΄λ μ°μ΅μ΄ νμνλ€. λ§μ½ λ κ° μ΄μμ μνκ° νμνλ€λ©΄ μΌλ¨ μ κ· ννμλ§μΌλ‘ ν΄κ²°νκΈ°λ μ½μ§ μμ λ¬Έμ λΌκ³ νλ¨ν μ μλ κ²μ΄λ€.
λ¬Όλ‘ μ΄λ° μμ μκ³ λ¦¬μ¦μ μ΅μν μ¬λκ³Ό μ΅μνμ§ μμ μ¬λμ λ¬Έμ νμ΄μ μ°¨μ΄κ° μ‘΄μ¬νκΈ° λλ¬Έμ νλμ μνλ§μΌλ‘ ν΄κ²°ν μ μλ λ¬Έμ λ₯Ό μ¬λ¬ κ°μ μνκ° νμνλ€κ³ μκ°ν μλ μμ§λ§, κ·Έλλ μκ³ λ¦¬μ¦μ μ¬λ₯μ μμμ΄ μλλΌ μ°μ΅μ μμμ΄λ―λ‘ 1λ , 2λ κΎΈμ€ν νλ€λ³΄λ©΄ μ‘°κΈμ© κ°μ μ‘λ μκ°μ΄ μ§§μμ§ κ²μ΄λ€.
λ§μΉλ©°
μ¬μ€ μ κ· ννμμ νκ³λ κ·Έλ₯ βκ΄νΈμ κΉμ΄μ μ νμ΄ μλ λ¬Έμμ΄μ μΈμ§ν μ μλ€βμ²λΌ κ°λ¨ν λ§λ‘λ μ€λͺ ν μ μλ λΆλΆμ΄λ€.
νμ§λ§ κ·Έλ₯ μ΄λ κ² μ€λͺ νκ³ μΈμ°λ κ² λ³΄λ€λ μ κ· ννμμ΄ μ΄λ€ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ νμν λꡬμΈμ§, μ΄λ€ 컨μ μ κ°μ§κ³ μλμ§λ₯Ό ν¨κ» μ΄μΌκΈ°νλ©΄ μ‘°κΈ λ μ΄ν΄νκΈ°κ° μ¬μΈ κ²μ΄λΌκ³ μκ°νλ€.
μ κ· ννμμ μ΄λ° νκ³κ° μ‘΄μ¬νλ€λ μ¬μ€μ λͺ¨λ₯Έλ€λ©΄ β<ul>
νκ·Έ μμ <li>
νκ·Έκ° μ‘΄μ¬νλ?β κ°μ μ νμ μΈ μν©μ μ κ· ννμμΌλ‘ ν΄κ²°νλ κ²½νμ λ°νμΌλ‘, ν΄κ²°μ΄ λΆκ°λ₯ν λ¬Έμ λ₯Ό ν΄κ²°νλ €κ³ λμ νκ² λ μλ μλ€.
λ¬Όλ‘ μ κ· ννμμ΄ λ¬Έμμ΄μ λ€λ£° λ λ§μ νΈλ¦¬ν¨μ μ£Όλ κ²μ μ¬μ€μ΄λ€. νμ§λ§ μμ μ΄μΌκΈ° νλ― μ κ· ννμμ λ°±νΈλνΉ μκ³ λ¦¬μ¦μ μμνμ§ λͺ» νλ νΌν¬λ¨Όμ€ μ΄μλ₯Ό κ°μ Έλ€ μ€ μλ μκ³ , μ κ· ννμμΌλ‘λ κ²°μ½ νμ§ λͺ»νλ λ¬Έμ λ μ‘΄μ¬νκΈ° λλ¬Έμ νμ μ κ· ννμμ΄λΌλ λꡬλ₯Ό μ¬μ©νλ€κ³ μ ννκΈ° μ μλ βμ΄κ² μ λ§ ν¨μ¨μ μΈ μ νμΈμ§βμ λν κ³ λ―Όμ ν΄λ³΄λ μ°μ΅μ΄ νμνλ€.
μ΄μμΌλ‘ HTMLμ μ κ· ννμλ§μΌλ‘ νμ±ν μ μμκΉ? ν¬μ€ν μ λ§μΉλ€.