SPEC : http://icpc.baylor.edu/past/icpc2001/Finals/problems.pdf μ€ Problem A
----
Requirement μμ μμκΆλ¦¬ (μΌλ¨μ λ μ€λ₯΄λλλ‘. Testability λ₯Ό κ³ λ €νμ§ μμ μνλ‘)
----
λ¬Έμ λΆλ₯
- http://zeropage.org/pds/200272883050/VonNeuman_NoComment.zip - μ£Όμμλ κ°μ₯ μ΄κΈ° λ²μ
- http://zeropage.org/pds/20027281074/VonNeuman_Comment.zip - μ£Όμ λ¬λμ€μΈ λ²μ (μμ§ μ£Όμμμ κΈ° μλ λͺ»ν¨)
- TDDμ κ·Ό λ°©λ²μ λ―Έμ
- 1002 μ κ°μΈμ μΌλ‘ μκ°λλ 'λ―Έμ' νλ€κ³ μκ°ν μ μ λ λ€λ©΄, νμμ νλ‘κ·Έλλ°μ νλ 리λ¬μ΄ μλμλ€λ μ . μ΄μ μ€νμΌμ΄λΌλ©΄ μΌλ¨ λ¬Έμ λ₯Ό λ³΄κ³ λ¬Έμ λ₯Ό λλλ©΄μ μλ리μ€λ₯Ό μ΄λμ λ λ§λ€μ΄ λμ λ€, κ·Έκ±Έ κ²μ¦ν΄λκ°λ€λ λλμΌλ‘ ν
μ€νΈμ½λλ₯Ό μμ±νμλλ°, μ΄λ²μ κ²½μ° μ λ§ Extreme νκ² μμ
ν κ² κ°λ€. (μ€λ°μ CRC λΌλ νλ² νκ³ μΆμλλ°, νμκ² λ¬Όμ΄λ³΄κ³ μ μ§ 'μ λ΄κ° μλ λ°©λ²μ΄ νλ¦°κ±ΈκΊΌμΌ' νλ©° κ·Έλ₯ Test λ§ μκ°νκ² λμλ€.) μμ
νλ μ€κ° λκ° μμ°μΉ μμ λλμ΄ λ€μλ€λ©΄, μλ§ λκ° μ΄λ° λλμ΄μλ κ² κ°λ€. μ λ°μ μκ°μ νλ²μ λ μ€κ°μ μ 리λ₯Ό ν νμκ° μμ건λ°, κ·Έλ° μκ°μ λμ§ λͺ»νκ².
- 1002 μ κ°μΈμ μΌλ‘ μκ°λλ 'λ―Έμ' νλ€κ³ μκ°ν μ μ λ λ€λ©΄, νμμ νλ‘κ·Έλλ°μ νλ 리λ¬μ΄ μλμλ€λ μ . μ΄μ μ€νμΌμ΄λΌλ©΄ μΌλ¨ λ¬Έμ λ₯Ό λ³΄κ³ λ¬Έμ λ₯Ό λλλ©΄μ μλ리μ€λ₯Ό μ΄λμ λ λ§λ€μ΄ λμ λ€, κ·Έκ±Έ κ²μ¦ν΄λκ°λ€λ λλμΌλ‘ ν
μ€νΈμ½λλ₯Ό μμ±νμλλ°, μ΄λ²μ κ²½μ° μ λ§ Extreme νκ² μμ
ν κ² κ°λ€. (μ€λ°μ CRC λΌλ νλ² νκ³ μΆμλλ°, νμκ² λ¬Όμ΄λ³΄κ³ μ μ§ 'μ λ΄κ° μλ λ°©λ²μ΄ νλ¦°κ±ΈκΊΌμΌ' νλ©° κ·Έλ₯ Test λ§ μκ°νκ² λμλ€.) μμ
νλ μ€κ° λκ° μμ°μΉ μμ λλμ΄ λ€μλ€λ©΄, μλ§ λκ° μ΄λ° λλμ΄μλ κ² κ°λ€. μ λ°μ μκ°μ νλ²μ λ μ€κ°μ μ 리λ₯Ό ν νμκ° μμ건λ°, κ·Έλ° μκ°μ λμ§ λͺ»νκ².
- μλ£ν λ°°κ²½ μ§μμ λ―Έμ (μ²μ STLλ―Έμ¬μ© μ κ·Ό, μ€λ°λΆν° STLμ¬μ©μΌλ‘ μλ£νμ μΌκ΄μ±λ¬Έμ )
- μ€κ°μ μ°½μ€μ΄νμ΄ "λν¬λ C++ λ‘ νλ‘κ·Έλλ°μ νλ©΄μ STLλ₯Ό μμ¬μ©νλ€?" λΌκ³ νμλ, κ·Έλ₯ λ§μ°νκ² Java μμμ Collection Class μ λλ‘λ§ STLμ μκ°νκ³ , μ¬μ©μ μ μνλ€. κ·Έλ¬λ€κ° μ€λ°λΆλ‘ λ€μ΄μλ©΄μ Vectorλ₯Ό μ΄μ©νκ² λμλλ°, μ²μ νλλ² μ΄μ©ν Vector κ° νλ°μΌλ‘ κ°λ©΄μ μ 체μ λμμΈμ λ€μ§μλ€; (λ¬Όλ‘ κ±°κΈ°μλ λλ―Έν° λ²μΉμ μ§ν€μ§ μμ μμ€λ νλͺ«νμ§λ§ -_-;) κ·Έκ±Έ λ λμλΌλ Vectorλ₯Ό μ¨ λκ°λ©΄μ λ°±ν° λΉκ΅ assert λ¬Έ λ±λ λ§λ€μ΄ λκ³ νλ μμΌλ‘ μ μ°¨ μ΄μ©νλ€λ³΄λ μλΉν νΈλ¦¬νλ€. κ·Έλ¬λ€κ° Refactoring Time λ μλ‘ λ€λ₯Έ μλ£ν (μμμ array λ‘ μΌλ κ²λ€) μ λν΄ vector λ‘ ν΅μΌμ νλ€ λ³΄λ μκ°μ΄ λΉκ΅μ κ½€ μ§μ°μ΄ λμλ€.
- μ€κ°μ μ°½μ€μ΄νμ΄ "λν¬λ C++ λ‘ νλ‘κ·Έλλ°μ νλ©΄μ STLλ₯Ό μμ¬μ©νλ€?" λΌκ³ νμλ, κ·Έλ₯ λ§μ°νκ² Java μμμ Collection Class μ λλ‘λ§ STLμ μκ°νκ³ , μ¬μ©μ μ μνλ€. κ·Έλ¬λ€κ° μ€λ°λΆλ‘ λ€μ΄μλ©΄μ Vectorλ₯Ό μ΄μ©νκ² λμλλ°, μ²μ νλλ² μ΄μ©ν Vector κ° νλ°μΌλ‘ κ°λ©΄μ μ 체μ λμμΈμ λ€μ§μλ€; (λ¬Όλ‘ κ±°κΈ°μλ λλ―Έν° λ²μΉμ μ§ν€μ§ μμ μμ€λ νλͺ«νμ§λ§ -_-;) κ·Έκ±Έ λ λμλΌλ Vectorλ₯Ό μ¨ λκ°λ©΄μ λ°±ν° λΉκ΅ assert λ¬Έ λ±λ λ§λ€μ΄ λκ³ νλ μμΌλ‘ μ μ°¨ μ΄μ©νλ€λ³΄λ μλΉν νΈλ¦¬νλ€. κ·Έλ¬λ€κ° Refactoring Time λ μλ‘ λ€λ₯Έ μλ£ν (μμμ array λ‘ μΌλ κ²λ€) μ λν΄ vector λ‘ ν΅μΌμ νλ€ λ³΄λ μκ°μ΄ λΉκ΅μ κ½€ μ§μ°μ΄ λμλ€.
- Refactoring Bad Smell μ μ λλ‘ λ§‘μ§ λͺ»ν¨ - κ°κ³ΌνκΈ° μ½μ§λ§ μ€μν κ²μ€ νλλ‘ namingμ΄ μλ€. μ£Όμμ λ€λ μ€κ°μ λλμ μ΄ μλ€λ©΄, naming μ λν΄μ μνν νλ€λ λλμ΄ λ€μλ€. κ·Έλ¦¬κ³ μ£Όμμ λ¬μκ°λ©΄μ μ΄λ―Έ ꡬμμ΄ λμ΄λ²λ¦° μμ μ ν
μ€νΈλ€ (λ‘μ§μ΄ λ§μ΄ λ°λλ©΄μ ν
μ€νΈλ€μ΄ λ§μ΄ κΉ¨μ Έλκ°λ€) λ₯Ό 보면 λλ―Έν° λ²μΉμ΄λΌλκ° μΌκ΄λ μλ£νμ μ¬μ© (InformationHiding) μ λ¬Έμ κ° μμμμ λλλ€.
Requirement μμ μμκΆλ¦¬ (μΌλ¨μ λ μ€λ₯΄λλλ‘. Testability λ₯Ό κ³ λ €νμ§ μμ μνλ‘)
- load λ₯Ό λ°μμν€λ μλ₯Ό Passenger λΏλ§ μλλΌ λ€λ₯Έ μ¬λ¬κ°μ§λ₯Ό λλ€. ex) μ¬νκ° κ°λ°©, 컨ν
μ΄λμ κ²½μ° traffic load 2, 4 λ₯Ό λ°μμν¨λ€.
-> μ΄ κ²½μ° PassengerSet μ΄ λ°λ‘ λΉ μ Έμμ§ μμ κ²½μ° κ³ μνμ§ μμκΉ. PassengerSet μ΄ λΉ μ Έμλ€λ©΄, κ°λ°©, 컨ν μ΄λ λΆλΆλ€μ λν΄μ case λ¬Έμ΄ λ³΅μ‘ν΄μ§λ―.
-> μ΄μ λ°λΌ Input λΆλΆμ΄ λ°λκ³ , Input λΆλΆμ΄ ν΄λμ€μ ν©μ³μ§ μ½λμ κ²½μ° λλμ± κ³¨μΉ.
- PassengerSet Caseκ° μ¬λ¬κ°μ΄κ³ Configuration μ 1κ°μΈ κ²½μ°μ λν΄μ. Configuration 1 : μ¬λ¬ Case μ λν΄ κ°κ° μΆλ ₯νλ κ²½μ°.
-> μμ PassengerSet μ΄ λ°λ‘ μμ΄μ Configuration κ³Ό κ°μ΄ νλν κ²½μ°μ μ½κ² ꡬν κ°λ₯. κ·Έλ μ§ μμ κ²½μ° κ³ μ μμ.
- κ°μ₯ νΈλν½μ΄ λ§μ΄ λ°μνλ κΈΈμ μμλΈλ€. - 볡λμ λν΄μ InformationHiding.
- 볡λμ€μμ μΌμν μμ€μ»¬λ μ΄ν°λ₯Ό λμ΄λ³Έλ€. - μλ.
- μ§κΈ λ§λ λͺ¨λμ μμ€ μμ μμ΄ GUI λ²μ μΌλ‘ μ¬μμ±νκΈ° - Input / Output λ¨Όμ μμ±νλ μ¬λλ€μ κ°μ₯ κ³ μ.
- μΆλ ₯ Output μ Sorting μ 2κ°μ§λ‘ λλ€λ©΄?
-> Output μͺ½μ΄ λ°λ‘ λλμ΄μ§ κ²½μ° κΈλ°©.
VonNeumannAirport/1002 | 1002 | VonNeumannAirport TDD μ¬μλμ€. |
VonNeumannAirport/μΈμ | ["Lovelyboy^_^"] | |
VonNeumannAirport/Leonardong | ν λ² μ€ν¨ ν μ¬λμ ν Pythonλ²μ | |
VonNeumannAirport/λ¨μν | (namsang) |
λ¬Έμ λΆλ₯