E D R , A S I H C RSS

Von Neumann Airport

SPEC : http://icpc.baylor.edu/past/icpc2001/Finals/problems.pdf 쀑 Problem A

μ‹œκ°„ 지연 μš”μΈ

  • TDDμ ‘κ·Ό λ°©λ²•μ˜ λΈμˆ™
    • 1002 의 개인적으둜 μƒκ°λ˜λŠ” 'λΈμˆ™' ν–ˆλ‹€κ³  μƒκ°ν•œ 점을 λ“ λ‹€λ©΄, ν‰μ†Œμ— ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜λŠ” 리듬이 μ•„λ‹ˆμ˜€λ‹€λŠ” 점. 이전 μŠ€νƒ€μΌμ΄λΌλ©΄ 일단 λ¬Έμ œλΌ λ³΄κ³  λ¬Έμ œλΌ λ‚˜λˆ„λ©΄μ„œ μ‹œλ‚˜λ¦¬μ˜€λΌ μ–΄λŠμ •λ„ λ§Œλ“€μ–΄ 놓은 λ’€, κ·Έκ±Έ κ²€μ¦ν•΄λ‚˜κ°„λ‹€λŠ” λŠλ‚ŒμœΌλ‘œ ν…ŒμŠ€νŠΈμ½”λ“œλΌ μž‘μ„±ν–ˆμ—ˆλŠ”λ°, 이번의 경우 정말 Extreme ν•˜κ²Œ μž‘μ—…ν•œ 것 κ°™λ‹€. (μ€‘λ°˜μ— CRC 라도 ν•œλ²ˆ ν•˜κ³  μ‹Άμ—ˆλŠ”λ°, ν˜•μ—κ²Œ 물어보고 왠지 'μ•„ λ‚΄κ°€ μ•Œλ˜ 방법이 ν‹€λ¦°κ±ΈκΊΌμ•Ό' ν•˜λ©° κ·Έλƒ₯ Test 만 μƒκ°ν•˜κ²Œ λ˜μ—ˆλ‹€.) μž‘μ—…ν•˜λŠ” 쀑간 λ­”κ°€ μ„μ—°μΉ˜ μ•Šμ€ λŠλ‚Œμ΄ λ“€μ—ˆλ‹€λ©΄, μ•„λ§ˆ λŒ€κ°• 이런 λŠλ‚Œμ΄μ˜€λ˜ 것 κ°™λ‹€. μ „λ°˜μ  μ‹œκ°μ„ ν•œλ²ˆμ •λ„ 쀑간에 μ •λ¦¬λΌ ν•  ν•„μš”κ°€ μžˆμ„κ±΄λ°, 그런 μ‹œκ°„μ„ 두지 λͺ»ν•œκ²ƒ.

  • μžλ£Œν˜• λ°°κ²½ μ§€μ‹μ˜ λΈμˆ™ (처음 STLλΈμ‚¬μš© μ ‘κ·Ό, μ€‘λ°˜λΆ€ν„° STLμ‚¬μš©μœΌλ‘œ μžλ£Œν˜•μ˜ μΌκ΄€μ„±λ¬Έμ œ)
    • 쀑간에 μ°½μ€μ΄ν˜•μ΄ "λ„ˆν¬λŠ” C++ 둜 ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜λ©΄μ„œ STLλΌ μ•ˆμ‚¬μš©ν•˜λ„€?" 라고 ν–ˆμ„λ•Œ, κ·Έλƒ₯ λ§‰μ—°ν•˜κ²Œ Java μ—μ„œμ˜ Collection Class μ •λ„λ‘œλ§Œ STL을 μƒκ°ν•˜κ³ , μ‚¬μš©μ„ 잘 μ•ˆν–ˆλ‹€. κ·ΈλŸ¬λ‹€κ°€ μ€‘λ°˜λΆ€λ‘œ λ“€μ–΄μ„œλ©΄μ„œ VectorλΌ μ΄μš©ν•˜κ²Œ λ˜μ—ˆλŠ”λ°, 처음 ν•œλ‘λ²ˆ μ΄μš©ν•œ Vector κ°€ ν›„λ°˜μœΌλ‘œ κ°€λ©΄μ„œ μ „μ²΄μ˜ λ””μžμΈμ„ λ’€μ§‘μ—ˆλ‹€; (λ¬Όλ‘  κ±°κΈ°μ—λŠ” λ””λΈν„° 법칙을 지킀지 μ•Šμ€ μ†ŒμŠ€λ„ ν•œλͺ«ν–ˆμ§€λ§Œ -_-;) κ·Έκ±Έ λ– λ‚˜μ„œλΌλ„ VectorλΌ μ¨ λ‚˜κ°€λ©΄μ„œ λ°±ν„° 비ꡐ assert λ¬Έ 등도 λ§Œλ“€μ–΄ 놓고 ν•˜λŠ” μ‹μœΌλ‘œ 점차 μ΄μš©ν•˜λ‹€λ³΄λ‹ˆ μƒλ‹Ήνžˆ νŽΈλ¦¬ν–ˆλ‹€. κ·ΈλŸ¬λ‹€κ°€ Refactoring Time λ•Œ μ„œλ‘œ λ‹€λ₯Έ μžλ£Œν˜• (μ•žμ—μ„œ array 둜 썼던 것듀) 에 λŒ€ν•΄ vector 둜 톡일을 ν•˜λ‹€ λ³΄λ‹ˆ μ‹œκ°„μ΄ 비ꡐ적 κ½€ 지연이 λ˜μ—ˆλ‹€.

  • Refactoring Bad Smell 을 μ œλŒ€λ‘œ 맑지 λͺ»ν•¨ - κ°„κ³Όν•˜κΈ° μ‰½μ§€λ§Œ μ€‘μš”ν•œ 것쀑 ν•˜λ‚˜λ‘œ naming이 μžˆλ‹€. 주석을 λ‹€λŠ” 쀑간에 λŠλ‚€μ μ΄ μžˆλ‹€λ©΄, naming 에 λŒ€ν•΄μ„œ μ†Œν™€νžˆ ν–ˆλ‹€λž€ λŠλ‚Œμ΄ λ“€μ—ˆλ‹€. 그리고 주석을 λ‹¬μ•„κ°€λ©΄μ„œ μ΄λΈ κ΅¬μ‹μ΄ λ˜μ–΄λ²„λ¦° μ˜ˆμ „μ˜ ν…ŒμŠ€νŠΈλ“€ (둜직이 많이 λ°”λ€Œλ©΄μ„œ ν…ŒμŠ€νŠΈλ“€μ΄ 많이 κΉ¨μ Έλ‚˜κ°”λ‹€) λΌ λ³΄λ©΄ λ””λΈν„° λ²•μΉ™μ΄λΌλ˜κ°€ μΌκ΄€λœ μžλ£Œν˜•μ˜ μ‚¬μš© (InformationHiding) 의 λ¬Έμ œκ°€ μžˆμ—ˆμŒμ„ λŠλ‚€λ‹€.
μ•„. μ–Έμ œλ‚˜ 말만 많고 κΏˆλ³΄λ‹€ ν•΄λͺ½λ§Œ μ’‹λ‹€; μ‹€μ²œμ„ μ œλŒ€λ‘œ 해야지;; --1002

----
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)
----
λ¬Έμ œλΆ„λ₯˜
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:22
Processing time 0.0322 sec