null 팀ì�˜ 경우 B ë¬¸ì œ 하나를 í’€ì—ˆê³ (1시간 5ë¶„ ì •ë�„ 소요. 패ë„�í‹° ì—†ì�Œ), A 번 ë¬¸ì œë¥¼ 계ì†� 시ë�„하ë�˜ì¤‘ 시간초과.
초기 5ë¶„ ¶
1002ê°€ 5ë¶„ ì§€ê°�ì�„ 했습니다.; 암튼, 35ë¶„ì—� 시작ì�„ í–ˆê³ , ì�¼ë‹¨ 5ë¶„ì�˜ 시간ì�„ ë‘�ê³ neocoin ê³¼ 1002 는 ë¬¸ì œë“¤ì�„ ì�½ì–´ë‚˜ê°€ê¸° 시작했습니다. 한글 문서였기 때문ì—� 3ê°œì�˜ ë¬¸ì œë¥¼ 훑는ë�°ì—�ë�„ 5ë¶„ì�´ë©´ 충분하ë�”êµ°ìš”. neocoin ì�€ B번ì�„, 1002 는 A번ì�„ ì�¼ë‹¨ ì�½ê³ , C 번ì—� 대해서는 ê°™ì�´ ì�½ì—ˆìŠµë‹ˆë‹¤. ê·¸ë¦¬ê³ ë¯¸ë¦¬ ë¬¸ì œì¶œì œìž�쪽ì—�서 난ì�´ë�„를 C > A > B ìž„ì�„ 언급했습니다. ë¬¸ì œë¥¼ ì�½ì–´ë‚˜ê°€ë©´ì„œë�„ ì�¼ë‹¨ Bì�˜ 경우가 바로 계산ì�´ 나올 것 같아서 B 를 ë¨¼ì € 해결하기로 ì„ íƒ�했습니다. ê·¸ 다ì�Œì—�는 ë¬¸ì œì—� 대한 ì�´í•´ë�„ê°€ ìƒ�대ì �으로 높았ë�˜ A번ì�„ 해결하기로 했습니다.
ì§„í–‰ ¶
ë�„구는 연습장과 ì�¸ë�±ìФ 카드, assert 문ì�„ ì�´ìš©í•œ 테스트 ì¼€ì�´ìФ 등ì�„ ì�´ìš©í–ˆìŠµë‹ˆë‹¤. 연습장과 ì�¸ë�±ìФ 카드는 주로 개개ì�¸ 수ì‹�ê³¼ 중요 변수들ì�„ ì �기 위해, ë˜�는 그림ì�„ 그리기 위해 ì�´ìš©í–ˆê³ (ë‘� ë�„구ì�˜ ìš©ë�„ê°€ 구분ë�˜ì–´ìžˆì§„ 않았ì�Œ) ë¬¸ì œì—� 대해서 답ì�´ 나왔다하는 ê°€ì •í•˜ì—� (ë¬¸ì œì§€ì—� Sample Input->Output ì�´ 나와있었기ì—� 가능했습니다.) Backward 로 ë¬¸ì œê°€ í•´ê²°ë�œ ìƒ�황ì�„ ê°€ì •í•˜ê³ , 그러기 위해 필요한 변수들ì�„ 찾아나가는 방법으로 진행했습니다. 프로그래ë°� 스타ì�¼ì�€ Structured 스타ì�¼ì�˜ Stepwise Refinement & PBI & assert 를 ì�´ìš©í•œ TDD 를 사용했습니다.
B 번 ì§„í–‰ ¶
한 20ë¶„ì •ë�„ 잘못진행했었는ë�°, 첫번째는 1002 ê°€ B ë²ˆë¬¸ì œë¥¼ ì œëŒ€ë¡œ ì�´í•´í•˜ì§€ ëª»í–ˆê³ (앞부분만 ì�½ê³ , ë¬¸ì œì�˜ input-output ì�„ 거꾸로 íŒ�단), ë‘�번째는 input ì�´ 100 ì�¼ë•Œì�˜ output 예ìƒ�치를 잘못계산한 ìƒ�태ì—�서 ì�´ë¥¼ 근거로 Test Driven ì�„ 시ë�„해서 추후 발견뒤 테스트를 ìˆ˜ì •í•˜ëŠ”ë�™ì•ˆ 시간ì�„ ë‚비했습니다.
Sample 로 ì œê³µí•œ ë�°ì�´í„°ë“¤ì�„ 만족시키는 코드는 작성하였으나, ì—¬ì „ížˆ 변수들ì�´ 다 ë½‘ì•„ì ¸ì§€ì§€ 않아서, ìž„ì�˜ì�˜ ê²°ê³¼ë�°ì�´í„° (100ì�¸ 경우) ì—� 대해 예ìƒ�ë�˜ëŠ” 결과를 ìƒ�ê°�í•˜ê³ ì½”ë“œë¥¼ 작성한뒤, 코드와 결과들, 코드로부터 발견ë�˜ëŠ” 변수들ì�„ í† ëŒ€ë¡œ 연습장ì—� 기ë¡�ì�„ í–ˆê³ , 그러ë�˜ì¤‘ neocoin ì�´ ì�¼ë°˜í™” ê³µì‹�ì�„ 찾아내었습니다.
ì �ì ˆížˆ 중복코드를 ì‚ì œí•˜ê³ ë‚œ ë’¤, 한 5ë¶„ì •ë�„ Input-Output 코드를 iostream ê³¼ STL/vector 를 사용하여 작성한 ë’¤ ì�´ë¥¼ ì œì¶œ, 통과했습니다.
A 번 ì§„í–‰ ¶
A 번 진행중 ì•„ì‰¬ì› ë�˜ì �ì�€, ë§Œì�¼ ì�´ ë¬¸ì œë¥¼ 바로 í’€ê¸°ì „ì—� OO 패러다임으로 í•´ê²°í• ê²ƒì�¸ê°€ Structured 패러다임으로 í•´ê²°í• ê²ƒì�¸ê°€ì—� 대해 ë¨¼ì € ìƒ�ê°�하는 ì—¬ìœ ë¥¼ 가졌ë�”ë�¼ë©´ ë¬¸ì œ í•´ê²°ì�´ ë�” 쉽지 않았ì�„까 하는 ì �ì�´ì˜€ìŠµë‹ˆë‹¤.
ë¬¸ì œì—� 대해 ì—시 B 번ì�„ 진행하ë�˜ 스타ì�¼ëŒ€ë¡œ Structured 로 진행했는ë�°, 초반ì—� 너무 코드위주로 ê°� 변수들ì�„ ë½‘ì•„ë‚´ë ¤ê³ ì ‘ê·¼í•œ 것ì�´ ë¬¸ì œê°€ ë�˜ì—ˆë�˜ 것 같습니다. ì—¬ìœ ë¥¼ ë‘�ê³ íŽ˜ì�´í�¼ 프로그래ë°�ì�„ 했어ë�„. 바늘들ì—� 대해서 OO 로 ì ‘ê·¼í–ˆìœ¼ë©´ 좀 ë�” 쉽지 않았ì�„까 ìƒ�ê°�.
마치며 ¶
지난번 IPSC 경험때는 맨땅ì—� 해딩하는 ëŠ�낌ì�´ì˜€ëŠ”ë�°, ì�´ë²ˆì—�는 비ë¡� ìž…ìƒ�하지 못했지만, ê°�ê°�ì�˜ ê³¼ì •ë“¤ì�´ ì�˜ì‹�ì �으로 ì�¼ì–´ë‚œ ì �ì—� 대해서 ê°œì�¸ì �으로는 ì¦�ê±°ì› ê³ ëª…ì¾Œí–ˆìŠµë‹ˆë‹¤. 급조ë�˜ì–´ 2주만ì—� 만난 Pair ì¹˜ê³ ì†�ë°œì�´ 잘 맞았습니다. (ì�´ê±´ ë°©í•™ ë‘�달ë�™ì•ˆ ProjectPrometheus 때 하ë�„ 서로 싸워대어서. -_-;)
미리 ì˜ˆì œë¬¸ì œë¡œ ì œì‹œë�œ 5ë¬¸ì œì¤‘ ì–´ë ¤ì› ì—ˆë�˜ ë’¤ì�˜ 3ë¬¸ì œë“¤ì�„ ê°�ìž� í’€ì–´ë³´ê³ í›ˆë ¨í–ˆì—ˆë‹¤ë©´ ì‹¤ì „ì—�서ë�„ ë�” ì—¬ìœ ìžˆê³ ì�˜ì‹�ì �ì�¸ 작업ì�„ í• ìˆ˜ 있었으리ë�¼ ìƒ�ê°�하며. ê·¸ë¦¬ê³ , 초반ì—� 바로 TDD 로 나가는 것보다, ë¬¸ì œì—� 대한 여러 ì ‘ê·¼ë°©ë²•ì�„ ë‘” ë’¤, 하나를 ê³ ë¥´ê³ ê·¸ì—� 대해 TDD 로 나가는 것ì�´ ë�” 좋았ì�„ 것ì�´ë�¼ê³ ìƒ�ê°�. (TDD를 바로 ë¬¸ì œ Approach 기법으로 ì �용하는것 보단, 해당 ë¬¸ì œ ì ‘ê·¼ë°©ë²•ì—� 대해 빨리 필요한 변수들ì�„ ë°œê²¬í•´ë‚˜ê°€ê³ , 명확하게 해주는ë�° ë�” 효과가 í�¬ë‹¤ëŠ” ìƒ�ê°�ì�´ 들어서)
ë¬¸ì œë¥¼ 풀때 우스개로 ì�´ì•¼ê¸°í–ˆë�˜ê²ƒì�´ '수학ìž�ì�˜ ì ‘ê·¼ì�´ëƒ� 공학ìž�ì�˜ ì ‘ê·¼ì�´ëƒ�'(페르마ì�˜ ë§ˆì§€ë§‰ì •ë¦¬ ì±…ì—� 나왔ë�˜ 예. 즉, ì—°ì—/귀납). ì�´ëŸ°ë¬¸ì œì�¸ 경우 ë¬¸ì œ í’€ê¸°ì „ 'ì–´ëŠ�쪽 ì ‘ê·¼ì�´ ë�” ìœ ìš©í• ê¹Œ' ê¶�리를.; ê°œì�¸ì �ìœ¼ë¡ ì—°ì—ì�´ 약해서 후ìž�를..; --1002
1002가 사실� 모� �줘서 너무 �사합니다. 얼마나 기억� �듬었�까..
ë¬¸ì œë¥¼ 푸는 ë�™ì•ˆ, 굉장히 ì—¬ìœ ë¡ë‹¤ëŠ” ëŠ�낌ì�´ 들었습니다. ì �당히 ë‹¬ë ¤ë‚˜ê°„ë‹¤ê³ í• ê¹Œìš”. 위ì—� 언급ë�œ 2가지ì�˜ 실수가 없었다면, A를 넘어 C번ë�„ ë…¸ë ¤ ë´„ì§�한 ëŠ�낌ì�´ ë“니다. ì�´ëŸ° 것들ì�´ 연습으로 ì²´í™”ë�˜ëŠ” 것ì�´ê² 지요. 다ì�Œ ipsc를 ì¦�ê²�게 ê¸°ë‹¤ë ¤ 봅니다.
시간 지연ë�œ ì�´ìœ 는, 성급한 ë°©ë²•ë¡ ì�˜ ì„ íƒ�ê³¼ 믿는 것ì�„ 가장 ì�˜ì‹¬í•˜ë�¼ ë�¼ëŠ” 디버깅 ì›�ì¹™ì�„ 시간ì—� 쫓겨서 ìƒ�ê°�ì�„ 하지 못한ì �으로 ìƒ�ê°�합니다.
마지막으로, 2주만ì—� 만난 팀ì�˜ ì „ëžµì�„ 쓴다니, 약간 ì‚¬ê¸°ì£ ^^; --neocoin










