'''1th Programming Contest in CAUCSE''' 1회 ì¤‘ì•™ëŒ€í•™êµ ì»´í“¨í„°ê³µí•™ê³¼ í”„ë¡œê·¸ëž˜ë° ê²½ì§„ ëŒ€íšŒì— ëŒ€í•œ ìžë£Œ. ---- [[TableOfContents]] ---- === 안내 === * 시간: 2002ë…„ 10ì›” 26ì¼ 9:30 -- 12:30 * 장소: 7층 PC실 * 팀 구성: 2-3ì¸ / 팀 당 PC 한대 * 사용언어: C/C++ with Visual C++ 6.0 * ë¬¸ì œ 성격: êµë‚´ ëŒ€í•™ìƒ í”„ë¡œê·¸ëž¨ 경진 ëŒ€íšŒì˜ ë¬¸ì œ ì¶œì œ ê²½í–¥ì„ ë”°ë¥¸ë‹¤. 2002ë…„ë„ ë¬¸ì œ 샘플( http://cs.kaist.ac.kr/~acmicpc/problem.html see also ["2002ë…„ë„ACMë¬¸ì œìƒ˜í”Œí’€ì´"] 참조) * 경시 주ì˜ì‚¬í•: * 팀ì›ì´ ì•„ë‹Œ 사람과 대화 금지 * 휴대í°, ì¸í„°ë„· 사용 금지 * ê°œì¸ ë””ìŠ¤ì¼“, CD 등 휴대 금지. ë””ìŠ¤ì¼“ì€ ë‚˜ëˆ ì¤€ 것만 사용. * 채ì 기준: * 경시 3ì‹œê°„ì— 3ë¬¸ì œê°€ ì¶œì œëœë‹¤. (open book, closed internet) * íŒ€ì€ í•œ ë¬¸ì œì— ëŒ€í•´ 소스코드가 완성ë˜ë©´ ë””ìŠ¤ì¼“ì— ë‹´ì•„ 채ì íŒ€ì— ì œì¶œí•œë‹¤. * 채ì ì€ ê·¸ 소스코드를 컴파ì¼í•´ì„œ 수행파ì¼ì„ 만들어 채ì 한다. * ê·¸ ë¬¸ì œì— ëŒ€í•´ì„œ ì¤€ë¹„ëœ í…ŒìŠ¤íŠ¸ ë°ì´íƒ€( 보통 5-10ê°œ)ì— ëŒ€í•´ì„œ ëª¨ë‘ ë§žëŠ” ë‹µì„ ë‚´ì•¼ ê·¸ ë¬¸ì œë¥¼ 맞춘 것으로 한다. * í”„ë¡œê·¸ëž¨ì˜ ì‹¤í–‰ì‹œê°„ì´ ì¼ì •ì‹œê°„(예: 10ì´ˆ)ì„ ì§€ë‚˜ë„ ë나지 ì•Šì„ ê²½ìš° 틀린 ë¬¸ì œê°€ ë©ë‹ˆë‹¤. * ì»´íŒŒì¼ error, 실행 시간 error , ì¶œë ¥ í¬ë§·ì´ ë¬¸ì œì—ì„œ ì •í•œ 것과 다른 경우ì—ë„ í‹€ë¦¼. * ì œì¶œí•œ ë‹µì•ˆì´ í‹€ë ¸ì„ ê²½ìš°, 매번 ì¼ì •í•œ penalty ì 수 (10ì )를 받게 ëœë‹¤. * 틀린 ë¬¸ì œëŠ” 다시 ì œì¶œí• ìˆ˜ 있다. * 맞춘 ë¬¸ì œì— ëŒ€í•´ì„œëŠ” 경시 시작부터 ë¬¸ì œë¥¼ ì œì¶œí•œ ì‹œê°ê¹Œì§€ ì‹œê°„ì„ ë¶„ìœ¼ë¡œ 환산한 ê²ƒì´ ì 수로 주어진다. (ë”°ë¼ì„œ ì 수가 ì ì„ìˆ˜ë¡ ìœ ë¦¬) ê·¸ë¦¬ê³ ì—¬ê¸°ì— penalty ì 수를 í•©ì‚°í•œ ê²ƒì´ ê·¸ ë¬¸ì œì˜ ìµœì¢… ì 수가 ëœë‹¤. 예를 들어, ì–´ë–¤ í•œ ë¬¸ì œì— ëŒ€í•´ì„œ 다섯 번째 ì œì¶œì„ ì‹œìž‘í›„ 1시간 20ë¶„ì— í•˜ì—¬ 맞추면, 지나간 ì‹œê°„ì´ 80분ì´ë¯€ë¡œ 80ì , 네 번째까지는 í‹€ë ¸ìœ¼ë¯€ë¡œ 4번*10ì =40ì ì´ penalty, 최종 ì 수는 120ì ì´ ëœë‹¤. * 경시 후ì—ë„ ëª» 맞춘 ë¬¸ì œëŠ” ì 수가 없다. * ê° íŒ€ì˜ ìµœì¢… 성ì ì€ ë§žì¶˜ ë¬¸ì œ 수와 ì 수 í•©ì´ ëœë‹¤. * 순위는 맞춘 ë¬¸ì œì˜ ìˆ˜ê°€ 많ì„ìˆ˜ë¡ ìƒìœ„, ê°™ì€ ìˆ˜ì˜ ë¬¸ì œë¥¼ 풀면 빨리 푼 팀 (즉, ì 수 í•©ì´ ì ì€ íŒ€)ì´ ìˆœìœ„ì— ìœ ë¦¬í•©ë‹ˆë‹¤. * 프로그램 작성시 ìœ ì˜ ì‚¬í•: 1. ê° ë¬¸ì œëŠ” ë°ì´í„°ë¥¼ 외부ì—ì„œ ìž…ë ¥ë°›ì•„ì„œ 프로그램으로 ë‹µì„ ê³„ì‚°í•œ 후 반드시 ì¶œë ¥ì„ í•œë‹¤. ì´ë•Œ, ìž…ì¶œë ¥ì€ í‘œì¤€ìž…ì¶œë ¥ë§Œ 사용한다. íŒŒì¼ ìž…ì¶œë ¥ë¬¸ì„ ì“°ë©´ 안ë¨. 예: C {{{~cpp scanf ( "%d", &n ); // 표준 ìž…ë ¥ 부분 printf ( "I got %d\n", n ); // 표준 ì¶œë ¥ 부분 }}} C++ {{{~cpp cin >> n; // 표준 ìž…ë ¥ 부분 cout << "I got " << n << endl; // 표준 ì¶œë ¥ 부분 }}} 2. í•„ìš” 없는 ìž…ì¶œë ¥ì„ í•˜ë©´ 틀린 것으로 채ì . 3. í•„ìš” 없는 파ì¼ì„ ìƒì„±í•˜ê±°ë‚˜, í‘œì¤€ìž…ë ¥ì„ í•˜ì§€ ì•Šê³ íŒŒì¼ ìž…ë ¥ì„ í•˜ë©´ ì—ì‹œ 틀림. 4. 채ì ì€ ìžê¸° 컴퓨터ì—ì„œ 하는 ê²ƒì´ ì•„ë‹ˆë¼, 채ì íŒ€ì˜ ì»´í“¨í„°ì—ì„œ 실행한다. ì´ì ì„ ìœ ì˜í• 것. 즉, ìžê¸° 컴퓨터ì—만 있는 특수한 ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ê²Œ ë˜ë©´, 채ì 팀 컴퓨터ì—서는 안 ëŒì•„ ê°ˆ 수 있ìŒ. 5. 채ì íŒ€ì€ ì±„ì ì— í•„ìš”í•œ ë°ì´í„°ë¥¼ 파ì¼ë¡œ 만들어서 ê°€ì§€ê³ ìžˆë‹¤ê°€ ì´ë¥¼ í•™ìƒì˜ 수행파ì¼ì— íŒŒì¼ redirect를 통하여 수행파ì¼ì— ìž…ë ¥ì‹œí‚¨ë‹¤. 6. ëª¨ë“ ë¬¸ì œëŠ” 숫ìž, ì˜ì–´ 문ìžë“¤ì„ ìž…ë ¥ìœ¼ë¡œ 받아서, ì—ì‹œ 숫ìžë‚˜ ì˜ì–´ 문ìžë¥¼ ì¶œë ¥í•˜ë„ë¡ ë˜ì–´ 있다. 그래픽 ì¶œë ¥ì€ ì—†ìŒ. === ë¬¸ì œ === * ["1thPCinCAUCSE/ProblemA"] - A번 ë¬¸ì œ "시계" * ["1thPCinCAUCSE/ProblemB"] - B번 ë¬¸ì œ "ìˆ«ìž ìž…ë ¥" * ["1thPCinCAUCSE/ProblemC"] - C번 ë¬¸ì œ "색깔 바꾸기" === ë¬¸ì œ í’€ì´ === * 아래 ë§í¬ë¥¼ í´ë¦í•˜ì—¬ ìžì‹ ì˜ ë¬¸ì œ í’€ì´ë¥¼ 올리면 ë©ë‹ˆë‹¤. ìžì‹ ì˜ ì´ë¦„ì„ ë°í˜€ 주세요~ * ["1thPCinCAUCSE/ProblemA/Solution"] * ["1thPCinCAUCSE/ProblemB/Solution"] * ["1thPCinCAUCSE/ProblemC/Solution"] ---- === 대회 ìžì²´ì— 대해 === ì´ ëŒ€íšŒë¥¼ í•˜ê³ , ë†’ì€ ì 수를 ë°›ì€ íŒ€ì˜ ì†ŒìŠ¤ 코드를 ê³µê°œí•˜ê³ ëª‡ 가지 "í›„ì† ìž‘ì—…"(예컨대 ê° íŒ€ì˜ íšŒê³ ë¥¼ í¬í•¨, ëŒ€íšŒì— ëŒ€í•œ 다í먼트 위키 문서ë¼ë“ ê°€)ì„ í•´ì£¼ë©´ 아주 ë§Žì€ ê²ƒì„ ë°°ìš°ê²Œ ë˜ë¦¬ ë¼ ìƒê°í•©ë‹ˆë‹¤. 아쉬운 ì ì´ë¼ë©´, êµë‚´ ëŒ€í•™ìƒ í”„ë¡œê·¸ëž¨ 경진 대회와 acmì˜ icpc를 모ë¸ë¡œ 하는 듯 í•œë°, ê·¸ë ‡ë‹¤ë©´ 사용언어와 í”Œëž«í¼ ì—ì‹œ 좀 ì„ íƒì˜ í ì„ ë„“ê²Œ 해주는 게 좋지 ì•Šì„까 하군요. ì´ì œê¹Œì§€ ì œê°€ ë´ì˜¨ ëŒ€í•™ìƒ ìˆ˜ì¤€ì˜ ê²½ì§„ëŒ€íšŒ 중ì—ì„œ 개발환경과 언어 ëª¨ë‘ ë¥¼ ì´ë ‡ê²Œ í•œì •í•œ 경우는, íŠ¹ì • 회사ì—ì„œ 스í°ì„œë¥¼ 하는 경우 ë¹¼ê³ ëŠ” 본 ì ì´ ì—†ìŠµë‹ˆë‹¤. (최근 ì •ë³´ì²˜ë¦¬ ìžê²©ì¦ 실기 시험ì—ì„œë„ ëª¨ë“ ì–¸ì–´ë¥¼ 허용하ë„ë¡ ë°”ë€Œì—ˆë‹¤ê³ í•©ë‹ˆë‹¤) ë” ë§Žì€ ë°°ì›€ì˜ ê¸°íšŒê°€ ë 것ì¸ë° ì°¸ 아쉽군요. ë¬¼ë¡ C나 C++ì„ ì‚¬ìš©í•´ì•¼ë§Œ 하는 ìƒí™© ìžì²´ê°€ í•˜ë‚˜ì˜ ê³¼ì œ ìƒí™©ì´ ë˜ê³ ë•ë¶„ì— ì—¬ëŸ¬ê°€ì§€ 공부가 ë˜ê¸´ í•˜ê² ì§€ë§Œ, 우리는 "왜 C/C++ ë°–ì— ì‚¬ìš©í• ìˆ˜ ì—†ëŠëƒ"는 조금 ë” ë³¸ì§ˆì ì¸ ì§ˆë¬¸ì„ í•´ë´ì•¼ 합니다. 특히 학과 분위기가 C/C++ 쪽으로 편중ë˜ì–´ 있는 ìƒí™©ì—서는 ë§ì´ì£ . 혹ìžëŠ” ì´ëŸ° ë§ì„ í• ê²ë‹ˆë‹¤. "ì‚¬íšŒì— ë‚˜ê°€ì„œ ì¼í•˜ë‹¤ ë³´ë©´ ìžê¸°ê°€ ì›í•˜ëŠ” 환경ì—ì„œ ì¼í• 수 없는 ìƒí™©ì´ ìˆ˜ë„ ì—†ì´ ë§Žë‹¤. ê°‘ì´ ê¹Œë¼ë©´ ê¹ŒëŠ”ê±°ê±°ë“ ." 하지만 ì´ëŸ° ìƒí™©ì„ í•™êµì—까지 ì—°ê²°í• í•„ìš”ëŠ” 없어 ë³´ìž… 니다. 우리는 "êµìœ¡"ê³¼ "학문"ì´ëž€ 걸 하는 것ì´ë‹ˆê¹Œ ìš”. ë ì–´ì¨Œë“ C/C++ ë°–ì— ì•ˆëœë‹¤ë©´ ë˜ ë‚˜ë¦„ëŒ€ë¡œ 장ì 으로 ëŒë ¤ ìƒê°í•˜ê³ 열심히 준비하는 ê²ƒë„ ì˜ë¯¸ìžˆê² 습니다. ì´ëŸ° 대회가 ì—´ë ¸ë‹¤ëŠ” ìžì²´ê°€ 귀중한 것ì´ë‹ˆê¹Œìš”. 앞으로 ì •ê¸°ì 으로 열리면 í•™ìƒë“¤ì—게 ë§Žì€ ë™ê¸°ë¶€ì—¬ê°€ ë˜ê² 습니다. 혹시 여러가지 언어를 수용하는 경진대회가 ê¶ê¸ˆí•œ ì‚¬ëžŒì€ ICFP í”„ë¡œê·¸ëž˜ë° ê²½ì§„ 대회(http://icfpcontest.cse.ogi.edu/ )를 한번 둘러보시기 ë°”ëžë‹ˆë‹¤. ëˆˆì´ í™• ëœ¨ì¼ ê²ë‹ˆë‹¤. 특히 올해 ì£¼ì œëŠ” 로봇 프로그래ë°ìž…니다. 무척 í¥ë¯¸ë¡œìš´ ì£¼ì œì§€ìš”. ì œ ìƒê°ì—는 경진대회 ë¬¸ì œ ì€í–‰ì—ì„œ ê°“ 꺼낸듯한(ì•½ê°„ì€ ì²œíŽ¸ì¼ë¥ ì ì¸) ë¬¸ì œë“¤ 외ì—ë„ í•™ìƒë“¤ì´ ì¢‹ì•„í• ë§Œí•œ 프로그 ëž˜ë° ì£¼ì œê°€ 많ì€ë°, 그런 ê²ƒë“¤ë„ ì‹œë„í•´ ë³´ë©´ 어떨까 합니다. 수학 경진 대회건, í”„ë¡œê·¸ëž˜ë° ê²½ì§„ 대회건 그걸 준비하는 ì‚¬ëžŒë“¤ì€ ë§¤ì¼ ë¹„ìŠ·ë¹„ìŠ·í•œ ìœ í˜•ì˜ ë¬¸ì œë“¤ë§Œ "최단시간내ì—" í’€ì–´ì œë¼ëŠ” í›ˆë ¨ì„ í•˜ê³ , ë•ë¶„ì— ì–´ë–¤ 해답 ì§‘í•©ì„ ë¯¸ë¦¬ ì™¸ìš°ê³ ìžˆ 습니다. ì•Œê³ ë¦¬ì¦˜ X하면 바로 무ì˜ì‹ì 으로 ì† ëì—ì„œ 해당 ì•Œê³ ë¦¬ì¦˜ì„ êµ¬í˜„í•œ 모범 ë‹µì•ˆì´ íŠ€ì–´ë‚˜ì˜¤ê²Œ ìžì‹ ì´ í”„ë¡œê·¸ëž¨ ë˜ì–´ ìžˆì£ . 다 좋습니다만, ëª¨ë“ ì‚¬ëžŒì´ ê·¸ë ‡ê²Œ í›ˆë ¨ë°›ì„ í•„ìš”ëŠ” 없지 ì•Šì„까요? ì €ëŠ” ì˜ì–´ê³µë¶€ë¥¼ 하는 사람ì—게 ì´ëŸ° ë§ì„ í•´ì¤ë‹ˆë‹¤. ì˜ì–´ê³µë¶€ë¥¼ í•˜ë ¤ê³ ì›ì„œë¥¼ ê³ ë¥¼ ë•Œì—는 ì¼ë‹¨ ê·¸ ì±…ì„ í†µí•œ ì˜ì–´ê³µë¶€ì˜ ì´ë“ì„ ë¬´ì‹œí•˜ê³ ê³ ë ¤ë¥¼ í•´ë„ ì—¬ì „ížˆ ê·¸ ì±…ì„ ì½ì„ 마ìŒì´ 드는, 설사 ê·¸ ì±…ì´ êµì–´ë¡œ ë˜ì–´ ìžˆë‹¤ê³ í•´ë„ ì—¬ì „ížˆ ê·¸ ì±…ì„ ì½ì„ 마ìŒì´ 드는 그런 ì±…ì„ ë³´ë¼ê³ ë§ìž…니다. ì €ëŠ” ì¼ë‹¨ì€ í•™ìƒë“¤ì´ ê·¸ ì£¼ì œ ìžì²´ê°€ ë§¤ë ¥ì ì´ì–´ì„œ ì •ë§ ì°¸ì—¬ í•´ë³´ê³ ì‹¶ì€ ìƒê°ì´ 마구 드는 경우가 ì´ìƒì ì´ë¼ê³ 봅니다. ê¼ ì§€ì ë„ì „ì„ ì¢‹ì•„í•˜ëŠ” ì‚¬ëžŒë“¤ë§Œì´ ì•„ë‹ì§€ë¼ë„ "야, ì €ê±° 한번 í•´ë³´ë©´ ì°¸ ìž¬ë¯¸ìžˆê² ë‹¤" 그런 ìƒê°ì´ 드는 것 ë§ì´ì£ . ê·¸ë¦¬ê³ ê±°ê¸°ì—ì„œ ê°ìžì˜ ìˆ˜ì¤€ì— ë§žê²Œ ì €ë§ˆë‹¤ 무언가 ë°°ìš°ê³ ì–»ì„ ìˆ˜ 있다면 ë” ì¢‹ê² ì£ . ê³¼ í•™ìƒë“¤ë¼ë¦¬ ì´ëŸ° 대회를 주최해 보는 ê±´ 어떨까 합니다. ê¼ ICPC 스타ì¼ì„ ë‹µìŠµí• í•„ìš”ëŠ” ì—†ê² ì£ . --JuNe === ì „ëžµ === C/C++(VC++6.0)만 ì‚¬ìš©í• ìˆ˜ 있는 ìƒí™©ì—서는 ["STL"]ì„ ì‚¬ìš©í•˜ëƒ ì•ˆí•˜ëƒê°€ ì—„ì²ë‚œ ì°¨ì´ë¥¼ 불러올 것ì´ë¼ ìƒê°í•œë‹¤. ê·¸ë¦¬ê³ íŒ€ì´ ë‘명ì´ëƒ 세명ì´ëƒë„ 중요하긴 í• í„°ì¸ë°, 어떻게 ì¡°ì§ì 으로 잘 활용하ëŠëƒì— ë”°ë¼ ì°¨ì´ê°€ ìžˆê¸°ë„ í•˜ê³ ë³„ë¡œ ì—†ê¸°ë„ í• ê²ƒì´ë‹¤. ë˜í•œ ìžê°€ 테스트를 통해 ì–´ëŠ ì •ë„ ê²€ì¦ëœ 프로그램만 ì œì¶œì„ í• ìˆ˜ 있다면 페ë„티를 ì¤„ì¼ ìˆ˜ 있기 ë•Œë¬¸ì— í›¨ì”¬ ìœ ë¦¬í• ê²ƒì´ë‹¤. ë˜í•œ ëª¨ë“ ë¬¸ì œì— ëŒ€í•´ ì¶œì œìžê°€ 예ìƒí•˜ëŠ” í•´ë‹µì´ ìžˆì„ ê²ƒì´ê³ , 올바르게 ìž‘ë™ì€ 하지만 ìˆ˜í–‰ì‹œê°„ì´ í›¨ì”¬ ë” ê±¸ë¦¬ëŠ”(ì•Œê³ ë¦¬ì¦˜ì˜ ì»´í”Œë ‰ì‹œí‹°ê°€ 훨씬 높ì€) ë‹µì•ˆì´ ìžˆì„ í„°ì¸ë°, "ì¼ì •ì‹œê°„" ë‚´ì— ìˆ˜í–‰ì´ ì™„ë£Œë 수 있다면 ë” ë‹¨ìˆœí•œ ë‹µì•ˆì„ ê³ ë¥¼ 수 있는 ëŠ¥ë ¥ë„ ì•„ì£¼ ì¤‘ìš”í• ê²ƒì´ë‹¤. 예컨대, ì´ë²ˆ ëŒ€íšŒì˜ ì˜ˆì œ ë¬¸ì œ B번(http://cs.kaist.ac.kr/~acmicpc/B_word.pdf ) 경우, (아마ë„) ì¶œì œìžê°€ 예ìƒí•˜ëŠ” ë‹µì•ˆì˜ ì‹¤í–‰ 시간ì´ë‚˜, í˜¹ì€ ê·¸ë ‡ì§€ëŠ” 않지만(꽤 무ì‹í•œ ë°©ë²•ì„ ì“°ì§€ë§Œ) 올바르게 ìž‘ë™í•˜ëŠ” ë‹µì•ˆì˜ ì‹¤í–‰ 시간ì´ë‚˜ ëª¨ë‘ 1ì´ˆ ì´ë‚´ì´ë‹¤. 후ìžì˜ ë°©ë²•ì„ ìƒê°í•´ ë‚´ê³ , 프로그램 하는 ë°ì—는 보통 ì „ì‚°í•™ê³¼ í•™ìƒì´ë¼ë©´(ê·¸ë¦¬ê³ ê·¸ê°€ ["STL"], 특히 Permutation Generator를 다룰 수 있다면) 5분ì´ë©´ ë–¡ì„ ì¹˜ê³ ë„ ë‚¨ëŠ”ë‹¤. --JuNe ["1thPCinCAUCSE/ExtremePairì „ëžµ"] ["1thPCinCAUCSE/nullì „ëžµ"] ---- See Also ["컴공과프로그래ë°ê²½ì§„대회"]