<?xml version="1.0" encoding="UTF-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom">
   <title type="text">algospot.com :: Open Lectures</title>
      <updated>2010-07-30T09:45:24+09:00</updated>
   <id>http://algospot.com/zbxe/?mid=openlecture&amp;act=atom</id>
   <link rel="alternate" type="text/html" hreflang="ko" href="http://algospot.com/zbxe/openlecture"/>
   <link rel="self" type="application/atom+xml" href="http://algospot.com/zbxe/?mid=openlecture&amp;act=atom"/>
   <generator uri="http://www.xpressengine.com/" version="1.2.6">XpressEngine</generator>
   <entry>
      <title>Open Lecture 게시판 이용 안내</title>
      <id>http://algospot.com/zbxe/604</id>
      <published>2007-09-25T15:32:56+09:00</published>
      <updated>2007-09-25T17:04:18+09:00</updated>
      <link rel="alternate" type="text/html" href="http://algospot.com/zbxe/604"/>
      <link rel="replies" type="text/html" href="http://algospot.com/zbxe/604#comment"/>
      <author>
         <name>JM</name>
                  <uri>http://whinii.com/</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;Open Lecture 게시판은 각종 알고리즘에 대한 강좌와 실제 대회들의 문제풀이들이 올라오는 곳입니다.&lt;BR&gt;관심이 있는 분은 누구나 글을 게재하실 수 있습니다만, 다음의 규칙을 지켜주셨으면 좋겠습니다.&lt;BR&gt;&lt;BR&gt;1. 어느 정도 완성된 형태의 글을 올려주세요.&amp;nbsp;가능한한 표준어를 사용해 주시고,&amp;nbsp;각종 용어는&amp;nbsp;가능한한 정식 용어를 사용해 주셨으면 좋겠습니다. 예를 들면: &amp;nbsp;&apos;dijkstra 소스코드&apos; 대신 &apos;Dijkstra 의 최단거리 알고리즘&apos; 같은 글을 작성해 주세요.&lt;BR&gt;&lt;BR&gt;2. 같은 문제에 대한 해설을 2명 이상이 중복해서 작성하는 것을 막기 위해 대회 문제의 해설을 올릴 때는 운영진에게 메일이나 MSN,&amp;nbsp;혹은 IRC&amp;nbsp;로 미리 연락을 주세요.&lt;BR&gt;&lt;BR&gt;3. 단 이미 게재되어 있는 문제의 해법과 다른 방식의 해법에 대해서 설명할 경우에는 중복으로 해설해도 좋습니다. ^^&lt;BR&gt;&lt;BR&gt;운영진 연락처는 다음과 같습니다:&lt;BR&gt;구종만 메일 jongman at gmail.com, MSN whinii at diva.yonsei.ac.kr&lt;BR&gt;정현환 메일 libe at ajou.ac.kr, MSN method4libe at hotmail.com&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>IRC tutorial</title>
      <id>http://algospot.com/zbxe/2078</id>
      <published>2007-10-12T02:38:57+09:00</published>
      <updated>2009-08-31T12:19:21+09:00</updated>
      <link rel="alternate" type="text/html" href="http://algospot.com/zbxe/2078"/>
      <link rel="replies" type="text/html" href="http://algospot.com/zbxe/2078#comment"/>
      <author>
         <name>Being</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;오늘 연습에서 D번을 어이없이 날려먹고 기운이 없어서 딴짓하는 Being입니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;오늘은 가장 많은 분들이 쓰시는듯한 X-iRC로 #icpc에 들어오시는 방법에 대해서 간단히 이야기하려고 합니다.&lt;br&gt;&lt;br&gt;사실 #icpc만큼 재미있는 곳도 없죠...ㅋㅋ&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Download : &lt;a href=&quot;http://dgtalx.net/&quot;&gt;http://dgtalx.net/&lt;/a&gt; -&gt; X-IRC DOWNLOAD에서 클라이언트를 다운로드 할 수 있습니다 (2.6.1).&lt;br&gt;&lt;br&gt;Install : 적당한 위치에 설치합니다.&lt;br&gt;&lt;br&gt;Config : 클라이언트를 실행하고, &lt;br&gt;&lt;br&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/2078/IRC0.png&quot; alt=&quot;IRC0.png&quot; title=&quot;IRC0.png&quot; class=&quot;iePngFix&quot; style=&quot;&quot; /&gt;&lt;br&gt;&lt;br&gt;를 누릅니다. (또는 기본-&gt;설정 또는 Ctrl+O)&lt;br&gt;&lt;br&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/2078/IRC1.png&quot; alt=&quot;IRC1.png&quot; title=&quot;IRC1.png&quot; class=&quot;iePngFix&quot; style=&quot;&quot; /&gt;&lt;br&gt;&lt;br&gt;HanIRC로 서버를 설정합니다. 닉네임도 설정하시고, 긴 이름과 메일 주소는 적당히 사실이 아닌 내용을 채워넣으셔도 상관없습니다. (닉네임은 대화 도중에 수시로 변경 가능합니다)&lt;br&gt;&lt;br&gt;접속하신 뒤,&lt;br&gt;&lt;br&gt;/join #icpc (또는 /j #icpc)&lt;br&gt;&lt;br&gt;라고 입력합니다.&lt;br&gt;&lt;br&gt;그러면 #icpc 탭이 생기면서 icpc 채널에 들어오시게 됩니다.&lt;br&gt;&lt;br&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/2078/IRC2.png&quot; alt=&quot;IRC2.png&quot; title=&quot;IRC2.png&quot; class=&quot;iePngFix&quot; style=&quot;&quot; /&gt;&lt;br&gt;&lt;br&gt;서버에 접속했을 때 자동으로 이 채널에 들어오게 하고 싶으시다면, 빈 공간에서 우클릭해 &lt;br&gt;&lt;br&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/2078/IRC3.png&quot; alt=&quot;IRC3.png&quot; title=&quot;IRC3.png&quot; class=&quot;iePngFix&quot; style=&quot;&quot; /&gt;&lt;br&gt;&lt;br&gt;위 메뉴에서 추가하시면 서버에 연결할 때마다 자동으로 접속하실 수 있습니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;이상으로 간략히 채널에 들어오는 방법에 대해서 설명드렸습니다. 다른 기능들에 대해서는 천천히 채널분들과 대화를 나누면서 배워가시는게 좋지 않을까요? :p&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>TopCoder 에 대해 소개합니다</title>
      <id>http://algospot.com/zbxe/6377</id>
      <published>2007-11-29T16:15:28+09:00</published>
      <updated>2009-07-27T18:37:27+09:00</updated>
      <link rel="alternate" type="text/html" href="http://algospot.com/zbxe/6377"/>
      <link rel="replies" type="text/html" href="http://algospot.com/zbxe/6377#comment"/>
      <author>
         <name>JM</name>
                  <uri>http://whinii.com/</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;안녕하세요? 다음은 soyoja 님이 블로그에 쓰셨던 탑코더 소개글입니다. ^^&lt;br&gt;굉장히 잘 소개해 주신 것 같아 염치불구하고 허락을 받아 업어옵니다. &lt;br&gt;&lt;br&gt;---&lt;br&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;리퍼러를 분석해 보면 &lt;/font&gt;&lt;a style=&quot;&quot; href=&quot;http://icpc.baylor.edu/icpc/&quot; target=&quot;_blank&quot;&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;ACM-ICPC(세계대학생 프로그래밍 경진대회)&lt;/font&gt;&lt;/a&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt; 나 프로그래밍 경시대회 정보를 검색하다 이곳에 오는 분들도 꽤 되는 것 같다. 그래서 오늘은 &lt;/font&gt;&lt;a href=&quot;http://www.topcoder.com/&quot; target=&quot;_blank&quot;&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;TopCoder&lt;/font&gt;&lt;/a&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt; 에 대해서 소개하고자 한다. &lt;br&gt;&lt;br&gt;프
로그래밍 분야가 다른분야와 달리 어려운 점 중 하나는 프로그래머의 역량을 객관적수치로 평가하기가 어렵다는 것이다. 예를 들면
영어 능력은 토익/토플 과 같은 시험 성적을 통해 간접적으로 나마 평가가 가능하고, 운전 능력은 그 사람의 운전 경력과 무사고
몇년~ 이런 숫자를 통해 평가가 가능하다. &lt;br&gt;&lt;br&gt;하지만 프로그래머의 코딩 실력을 평가해보려면 어떻게 해야 하는가?? &lt;a href=&quot;http://www.mic.go.kr/user.tdf?a=user.board.BoardApp&amp;amp;c=2002&amp;amp;board_id=P_03_04_04&amp;amp;seq=430&amp;amp;mc=P_03_04_04&quot; target=&quot;_blank&quot;&gt;정보통신부 노임단가 기준&lt;/a&gt;대로 학력/경력/각종 자격증 소유 여부로 매겨야 하나?? 대답은 분명히 &lt;strong&gt;No&lt;/strong&gt;
다. 프로그래밍 실력이 경력/학력/자격증과 정비례하지 않는 경우가 많다는 사실은 많은 현업 개발자들의 경험을 통해 입증되었다.
( IT 업계특성상 경력/학력이 높아질수록 엔지니어는 프로그래밍에서 멀어지고 아키텍트 or 관리자를 지향하게 된다. )&lt;br&gt;&lt;br&gt;그래서 프로그래머의 역량을 측정하기 위한 방법중 하나로 도입된 것이 바로 알고리즘과 문제해결 능력을 묻는 코딩문제를 얼마나 잘 푸는지를 평가하는 방식이다. &lt;/font&gt;&lt;a href=&quot;http://olympiads.win.tue.nl/ioi/&quot; target=&quot;_blank&quot;&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;IOI (국제 정보 올림피아드)&lt;/font&gt;&lt;/a&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt; 나 &lt;/font&gt;&lt;a href=&quot;http://icpc.baylor.edu/icpc/&quot; target=&quot;_blank&quot;&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;ACM-ICPC&lt;/font&gt;&lt;/a&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt; 와 같은 알고리즘 문제풀이 대회를 학교와 교육기관에서 매년 많은 예산을 들여 개최하고, Google, MS 같은 IT 기업들이 개발자들의 입사시험 문제로 알고리즘 코딩 문제를 내는 것은 바로 이러한 이유 떄문일 것이다. &lt;br&gt;&lt;br&gt;하지만 IOI 와 ACM-ICPC 는 소수의 학생들을 대상으로 한정되어 있고, &lt;/font&gt;&lt;a href=&quot;http://acm.uva.es/p/&quot; target=&quot;_blank&quot;&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;UVa&lt;/font&gt;&lt;/a&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt; 나 &lt;/font&gt;&lt;a href=&quot;http://acm.pku.edu.cn/JudgeOnline/&quot; target=&quot;_blank&quot;&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;PKU&lt;/font&gt;&lt;/a&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt; , &lt;/font&gt;&lt;a href=&quot;http://ace.delos.com/usacogate&quot; target=&quot;_blank&quot;&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;USACO&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot;&gt; 와 같은 프로그래밍 연습 사이트도 존재하나 비영리 사이트인 관계로 정기적인 온라인 대회도 별로 없고, 학습자료나 풀이방법에 대한 친철한 가이드도 부족하여 체계적으로 프로그래밍 연습을 하기엔 불편한 점이 많다.&lt;br&gt;&lt;br&gt;이 와중에 미국의 한 회사가 정기적으로 온라인상에서 전세계 모든 개발자들을 대상으로 알고리즘 문제풀이 대회를 개최하고, 결과를 Rating 시스템을 도입해 수치/등수화한 것이 있으니 바로 TopCoder 매치이다. &lt;br&gt;&lt;br&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/6377/download.blog.jpeg&quot; alt=&quot;download.blog.jpeg&quot; title=&quot;download.blog.jpeg&quot; style=&quot;&quot; /&gt;&lt;br&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfs3.tistory.com/upload_control/download.blog?fhandle=YmxvZzY2MDY1QGZzMy50aXN0b3J5LmNvbTovYXR0YWNoLzAvMzcuSlBH&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;br&gt;TopCoder Inc. 라는&lt;span id=&quot;callbacknestsoyojacom563771&quot; style=&quot;width: 1px; height: 1px; float: right;&quot;&gt;&lt;embed allowscriptaccess=&quot;always&quot; id=&quot;bootstrappersoyojacom563771&quot; src=&quot;http://soyoja.com/plugin/CallBack_bootstrapperSrc&quot; wmode=&quot;transparent&quot; type=&quot;application/x-shockwave-flash&quot; enablecontextmenu=&quot;false&quot; flashvars=&quot;&amp;amp;callbackId=soyojacom563771&amp;amp;host=http://soyoja.com&amp;amp;embedCodeSrc=http%3A%2F%2Fsoyoja.com%2Fplugin%2FCallBack_bootstrapper%3F%26src%3Dhttp%3A%2F%2Fcfs.tistory.com%2Fblog%2Fplugins%2FCallBack%2Fcallback%26id%3D56%26callbackId%3Dsoyojacom563771%26destDocId%3Dcallbacknestsoyojacom563771%26host%3Dhttp%3A%2F%2Fsoyoja.com%26float%3Dleft&quot; swliveconnect=&quot;true&quot; height=&quot;1&quot; width=&quot;1&quot;&gt;&lt;/span&gt;
회사의 모토를 보면, 개발자들의 역량을 객관적으로 평가하기 위한 온라인 프로그래밍 대회 서비스를 열고, 이 결과들을 통해 여러
회사들이 개발자들을 쉽게 채용을 할 수 있는 Employment Service 를 연결하고 있다. (TopCoder Inc. 는
이런 회사들의 스폰서쉽이 주 수입원인 것 같다) &lt;br&gt;&lt;br&gt;프로그래밍 대회는 Algorithm 분야 및
Design(컴포넌트 설계), Development(컴포넌트 개발), Marathon Match(2주간의 장기 코딩대회) 로
나뉘어지며, 본인이 참여하고 있는 Algorithm 매치는 주 1회 꼴로 열리는 SRM(Single Round Match) 을
통해서 성적이 매겨진다. &lt;br&gt;&lt;/font&gt;&lt;br&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot;&gt;현재 한국에서는 60 여명의 코더가 활동중이며, &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://www.topcoder.com/stat?c=country_avg_rating&quot; target=&quot;_blank&quot;&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;한국의 국가 순위&lt;/font&gt;&lt;/a&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;는 이글을 쓰는 현재 15위 이다. TopCoder 를 통해 전세계의 개발자들 중에서 자신이 어느정도 위치인지 대략적으로나마 알수 있고, 또 자신을 단련하는 좋은 연습장이 될 수 있다. 그리고 무엇보다도 정말 재미있다! ^^ &lt;br&gt;&lt;br&gt;자... 그럼 혹시 TopCoder 에 가입하고 싶은 분들이 계신가.. &lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;a href=&quot;http://www.topcoder.com/reg/&quot; target=&quot;_blank&quot;&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;http://www.topcoder.com/reg/&lt;/font&gt;&lt;/a&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt; &lt;br&gt;&lt;br&gt;위의 링크에 가서 Competition Registration 항목을 선택하고 가입하면 된다... &lt;br&gt;참고로 가입시 적는 항목중 &quot;Referring Member&quot; 란 항목이 있는데, 추천회원을 의미한다. 이 글을 보고 가입하려는 분들은 글쓴이의 수고를 생각해서 &lt;strong&gt;Soyoja&lt;/strong&gt; 라고 써 주면 감사하겠다 =D  (싫다면 할 수 없다. ㅎㅎ)&lt;br&gt;&lt;br&gt;대회 방식은 간단하다. TopCoder 에 회원 등록을 한 후 Java 로 만들어진 Competetion Arena 라는 프로그램을 다운받고, &lt;/font&gt;&lt;a href=&quot;http://www.topcoder.com/tc?module=Static&amp;amp;d1=calendar&amp;amp;d2=thisMonth&quot; target=&quot;_blank&quot;&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;Event Calendar&lt;/font&gt;&lt;/a&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt; 
를 보고 SRM 이 열리는 시간에 접속해서 대회를 하면 된다. (표시된 시간은 미국 동부 표준시인 것을 주의) SRM 은 코딩
75분, 5분 휴식 후 다른 사람들이 짠 코드의 버그를 잡는 Challenge 15 분으로 총 2 시간 정도가 소요된다. &lt;br&gt;&lt;br&gt;회원 가입 및 TopCoder 활동은 모두 무료이며... 대회에서 성적이 좋으면 여러가지 재미난 혜택들이 많으니 많은 한국 개발자분들의 참여가 있으면 좋겠다... =) &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;----&lt;br&gt;&lt;br&gt;글 제공을 흔쾌히 허락해 주신 soyoja 님, 감사합니다. ^^ 원문 링크는 &lt;a href=&quot;http://soyoja.com/56&quot; onclick=&quot;window.open(this.href);return false;&quot; class=&quot;editor_blue_text&quot;&gt;여기&lt;/a&gt; 입니다.&lt;br&gt;&lt;/font&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>심심해서 끄적거려보는, 코딩실수</title>
      <id>http://algospot.com/zbxe/62422</id>
      <published>2009-10-29T00:38:53+09:00</published>
      <updated>2009-11-03T10:52:34+09:00</updated>
      <link rel="alternate" type="text/html" href="http://algospot.com/zbxe/62422"/>
      <link rel="replies" type="text/html" href="http://algospot.com/zbxe/62422#comment"/>
      <author>
         <name>Neon</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;알고리즘은 맞았다 싶은데 WA나 TLE가 뜨는 분들, 난감하시죠? 근데 막상 알고보면 어이없는 조그마한 실수로 문제를 놓치게 되는 경우도 왕왕 있는데, 곧 있을 ICPC Regional을 대비하여 몇가지 중요하다 싶은 체크리스트를 끄적거려보겠습니다.&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;1. 범위 Overflow&lt;/p&gt;&lt;p&gt;int의 표현 범위는 -2^31 ~ 2^31-1 사이이므로, 이 범위를 벗어나는 값을 계산하는 경우가 되면 예상과는 다른 이상한 값이 들어가게 됩니다. 이런 경우에는 64비트 정수 형태인 long long을 활용하거나 BigInteger를 구현해서 해결해야겠죠. BigInteger 클래스는 java만 쓰는 팀이 아닌 이상, 언제나 팀 노트에 들어가게 되는 약방의 감초와도 같은 라이브러리가 되겠습니다.&lt;/p&gt;&lt;p&gt;예제&amp;gt; &lt;br  /&gt;&lt;/p&gt;&lt;p&gt;int a = 1000000 * 1024; -&amp;gt; long long a = 1000000LL * 1024;&lt;/p&gt;&lt;p&gt;int b = 1&amp;lt;&amp;lt;50; -&amp;gt; long long b = 1LL &amp;lt;&amp;lt; 50;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;2. 소수 처리&lt;/p&gt;&lt;p&gt;부동소수점 소수표현은 언제나 제한된 precision을 갖게 됩니다. float&amp;lt;double&amp;lt;long double 순서로 precision이 증가하게 되는데요, 문제는 이러한 부동소수점 값들이 정확한 값은 아니라는 데 있습니다. 변수에다 1827361621525123.128371263을 넣으면 실제 들어가는 값은 제한된 precision으로 표현할 수 있는 범위 내의 값만 저장되게 된다는 것이지요. 그렇기 때문에, 부동소수점 값들을 가지고는 == 등의 연산을 사용하는 것을 자제해야 합니다. 부득이하게 == 연산을 사용해야 할 경우 1e-12 등 작은 epsilon 값을 더하거나 뺀 값을 가지고 비교하는 방법을 활용하도록 합시다.&lt;/p&gt;&lt;p&gt;예제&amp;gt;&lt;/p&gt;&lt;p&gt;if(a==b) ... -&amp;gt; if(fabs(a-b) &amp;lt; 1e-9) ...&lt;/p&gt;&lt;p&gt;while(e-s &amp;gt; 1e-6) ... - 이런 건 보통 결정 알고리즘에서 많이 활용하는 방식인데, 여러 모로 좋지 않으니(e나 s의 값이 각각 너무 큰 경우, 그리고 1e-6보다 더 작은 값을 epsilon으로 잡아야 하는 경우 등) 그냥 적당한 수를 매직 넘버로 넣어서 그 수만큼 iteration을 돌도록 하는게 좋습니다. for(int i=0;i&amp;lt;200;i++) ... 과 같은 식으로요.&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;3. I/O 처리속도&lt;/p&gt;&lt;p&gt;저는 사실 cin, cout, istringstream 등의 C++ I/O를 매우 많이 쓰는 편입니다. getline(cin,str) 등의 함수를 활용하면 입력의 크기에 관계없이 입력을 받을 수 있어서 많이 선호하는 편인데, 사실 이게 입력데이터가 큰 문제에서는 종종 TLE의 원인이 되기도 합니다. 3M 정도 되는 입력 데이터를 cin으로 처리하면 데이터 읽어들이는 데에만 1초 이상 소모하게 되는 경우도 종종 있습니다. 반면 fgets 등의 함수를 활용하면 엄청난 속도차이를 경험할 수 있지요. 다만 C 함수의 몇가지 제약조건은 주의하셔야 할 때도 있습니다.(fgets의 argument 등)&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;예제&amp;gt;&lt;/p&gt;&lt;p&gt;cin &amp;gt;&amp;gt; a; -&amp;gt; scanf(&quot;%d&quot;,&amp;amp;a);&lt;/p&gt;&lt;p&gt;string str; getline(cin,str); -&amp;gt; char str[1024]; if(fgets(str,1024,stdin) == 1024) 강제RE발생 -&amp;gt; 입력 데이터의 크기를 유추할 때 사용&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;제 오답 노트에 정리되어 있는 코딩 미스는 대략 저 세 가지 분류에 포함되는 게 대부분입니다. 추가할 거 있는분 환영...&lt;br  /&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>제가 학교에서 했던 Python 세미나 프리젠테이션 파일입니다.</title>
      <id>http://algospot.com/zbxe/59105</id>
      <published>2009-06-15T17:46:25+09:00</published>
      <updated>2010-06-18T16:34:34+09:00</updated>
      <link rel="alternate" type="text/html" href="http://algospot.com/zbxe/59105"/>
      <link rel="replies" type="text/html" href="http://algospot.com/zbxe/59105#comment"/>
      <author>
         <name>ipknHama</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;학교에서, 동아리 2학년 대상으로 파이썬을 이용해서 게임이나 간단한 프로젝트를 할 수 있기 위한 소개용 프리젠테이션을 진행한 파일입니다. 대충 언어라는게 어떤거다라는걸 아는 사람을 대상으로 만들었고, 게임에 관심없으시면 4, 5강은 패스해도 될 듯합니다.&lt;br  /&gt;
&lt;br  /&gt;
나중에 내용을 좀더 보강해서 강좌 형태로 만들어 놓겠습니다.&lt;br  /&gt;
&lt;br  /&gt;
&lt;a href=&quot;https://docs.google.com/Present?docid=ddxzp3tw_19fwm346g8&quot;&gt;0강 - 소개&lt;/a&gt; &lt;br  /&gt;
&lt;a href=&quot;https://docs.google.com/Present?docid=ddxzp3tw_18cpw56bgt&quot;&gt;1강 - 기초 문법&lt;/a&gt;&lt;br  /&gt;
&lt;a href=&quot;https://docs.google.com/Present?id=ddxzp3tw_25dgjfcwfc&quot;&gt;2.1강 - 기본 자료구조&lt;/a&gt;&lt;br  /&gt;
&lt;a href=&quot;https://docs.google.com/Present?id=ddxzp3tw_20frbbz6cv&quot;&gt;2.2강 - 기본 자료구조 보충&lt;/a&gt;&lt;br  /&gt;
&lt;a href=&quot;https://docs.google.com/Present?id=ddxzp3tw_29gp3b2wgd&quot;&gt;3강 - 기초적인 모듈 사용법 + 모듈 몇개 소개&lt;/a&gt;&lt;br  /&gt;
&lt;br  /&gt;
3강 추가자료 (generator 관련)&lt;br  /&gt;
&lt;a href=&quot;https://ipkn.upnl.org/bg.py&quot;&gt;이진수 게임&lt;/a&gt;&lt;br  /&gt;
&lt;a href=&quot;https://ipkn.upnl.org/fg.py&quot;&gt;피보나치&lt;/a&gt;&lt;br  /&gt;
&lt;br  /&gt;
&lt;a href=&quot;https://docs.google.com/Present?id=ddxzp3tw_33df4ccfcd&quot;&gt;4강 - socket 소개&lt;/a&gt;&lt;br  /&gt;
&lt;a href=&quot;https://docs.google.com/Present?id=ddxzp3tw_36gzpgm6f6&quot;&gt;5강 - pygame 소개&lt;/a&gt;&lt;br  /&gt;
&lt;a href=&quot;https://docs.google.com/Present?id=ddxzp3tw_37dwhvmncs&quot;&gt;6.1강 - OOP(1)&lt;/a&gt;&lt;br  /&gt;
&lt;a href=&quot;https://docs.google.com/Present?id=ddxzp3tw_38ct97g9gt&quot;&gt;6.2강 - OOP(2) 다중 상속 등&lt;/a&gt;&lt;br  /&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>PC^2 서버 설정</title>
      <id>http://algospot.com/zbxe/56478</id>
      <published>2009-03-24T21:11:54+09:00</published>
      <updated>2009-03-24T21:11:54+09:00</updated>
      <link rel="alternate" type="text/html" href="http://algospot.com/zbxe/56478"/>
      <link rel="replies" type="text/html" href="http://algospot.com/zbxe/56478#comment"/>
      <author>
         <name>JM</name>
                  <uri>http://whinii.com/</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;div&gt;교내 대회나 연습을 위해 PC^2 를 셋업하실 분들을 위한 가이드입니다. ^^;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;1. http://www.ecs.csus.edu/pc2/pc2tug/ 에서 최신 버전의 서버를 받는다.&lt;/div&gt;&lt;div&gt;2. 적절한 곳에 압축을 푼다.&lt;/div&gt;&lt;div&gt;3. pc2v9.ini 를 수정한다. IP 수정. 포트는 바꾸지 말자.&lt;/div&gt;&lt;div&gt;4. 이 파일을 다시 압축해서 client package 를 만들고, 배포한다.&lt;/div&gt;&lt;div&gt;5. ballons_package 를 적절히 설치.&lt;/div&gt;&lt;div&gt;6. binpc2server.bat 를 띄운다. site1/site1 로 로그인하고, contest password 를 적절히 정한다. IP 를 공식 IP 로 변경할 것.&lt;/div&gt;&lt;div&gt;7. binpc2admin.bat 를 띄운다. administrator1/administrator1 로 로그인. &lt;/div&gt;&lt;div&gt;8. Account 들을 만든다: 1개 이상의 judge, 1개의 scoreboard, 필요한 만큼의 팀 수.&lt;/div&gt;&lt;div&gt;9. Language 탭으로 가서 언어를 추가한다: Auto Populate 기능을 쓰면 간단.&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;* MSVC 를 쓰는 경우&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;* cmdline: `cl.exe {:mainfile} -Fea.exe`&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;* executable: `a.exe`&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;* execution: `a.exe`&lt;/div&gt;&lt;div&gt;10. Problems 탭으로 가서 문제 추가.&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;* 적절한 밸리데이터를 골라둔다.&lt;/div&gt;&lt;div&gt;11. Times 탭으로 가서 시간을 바꾼다.&lt;/div&gt;&lt;div&gt;11. Auto Judge 탭에서 judge 에 모든 문제의 auto judge 권한을 켜 둔다.&lt;/div&gt;&lt;div&gt;12. binpc2judge.bat 를 띄운다. http://algospot.com/zbxe/?mid=openlecture&amp;amp;document_srl=49656 참조해서 적절히 세팅할 것.&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;* 대신 pc2env.bat 에 다음 세 줄을 추가해도 된다:&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;set PATH=%PATH%;C:Program FilesMicrosoft Visual Studio 8VCbin;C:Program FilesMicrosoft Visual Studio 8Common7IDE&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;set INCLUDE=%INCLUDE%;C:Program FilesMicrosoft Visual Studio 8VCinclude&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;set LIB=%LIB%;C:Program FilesMicrosoft Visual Studio 8VClib;C:Program FilesMicrosoft SDKsWindowsv6.0ALib&lt;/div&gt;&lt;div&gt;12. All Runs 에서  Auto Judge 버튼을 눌러둔다&lt;/div&gt;&lt;div&gt;13. Configure Contest/Times 탭에서 컨테스트를 실행할 수 있다.&lt;/div&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>알고리즘 디자인 패러다임 #1</title>
      <id>http://algospot.com/zbxe/55910</id>
      <published>2009-02-22T02:38:58+09:00</published>
      <updated>2009-02-23T19:54:59+09:00</updated>
      <link rel="alternate" type="text/html" href="http://algospot.com/zbxe/55910"/>
      <link rel="replies" type="text/html" href="http://algospot.com/zbxe/55910#comment"/>
      <author>
         <name>JM</name>
                  <uri>http://whinii.com/</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;
안녕하세요. 프로그래밍 대회에 필요한 알고리즘 기초 지식 관련 튜토리얼? 강좌? 시리즈를 좀 써 보려고 합니다. ^^; 원래는 &lt;a href=&quot;http://jmk.pe.kr/pages/read/docs/writings/cs/algorithm-design-paradigms-1&quot;&gt;제 블로그&lt;/a&gt; 에 올렸던 글이지만, 이 쪽에 올리는 것이 보실 분들이 더 있을 것 같아 올려봅니다. 혹시 도움이 되면 좋겠습니다. ^^; 
&lt;/p&gt;

&lt;p&gt;
그리고 졸문입니다만 어디에 퍼가지는 않으셨으면 좋겠습니다. 링크는 좋아요~ :-)
&lt;/p&gt;
&lt;h2&gt;1. 소개&lt;/h2&gt; 
 
&lt;p&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/패러다임&quot;&gt;패러다임&lt;/a&gt; 이란 원래 수사학에서 유래한 말인데, 어떤 시기에 사람들의 과학적 사상과 믿음을 지배하는 이론의 틀, 혹은 결정체라는 뜻으로 사용된다고 한다. 일단 무엇보다도, 멋있는 단어이기 때문에, 이 단어는 다양한 분야에 차용되어 다양한 뜻으로 사용되고 있다.&lt;/p&gt; 
 
&lt;p&gt;알고리즘 설계 패러다임 (algorithm design paradigm) 이란, 알고리즘이 주어진 문제를 해결하기 위해 채택한 전략이나 관점을 말한다. 알고리즘이 해결하는 문제나 알고리즘의 동작 방식이 완전히 다르더라도, 알고리즘의 동작 원칙이 같다면 같은 패러다임을 사용했다고 말할 수 있다. 그런 의미에서 알고리즘 디자인 패러다임은 알고리즘들을 구분하기 위한 기준으로도 자주 사용된다. 알고리즘 디자인 패러다임은 주어진 문제를 해결하기 위한 알고리즘을 설계하는 데 좋은 틀이 되어줄 수 있기 때문에, 패러다임을 공부하는 것은 알고리즘 설계 능력을 키우기 위한 좋은 방법이 된다.&lt;/p&gt; 
 
&lt;p&gt;이들은 알고리즘처럼 명확히 정의된 수학적 실체가 있는 것이 아니기 때문에, 각 패러다임에 대한 설명을 보고 직관적으로 이해하기란 힘이 든다. 따라서, 다양한 예제 문제를 해결하기 위해 각 패러다임들이 적용된 예를 보면서 경험적으로 각 기법을 이해하는 것이 가장 효율적이다.&lt;/p&gt; 
 
&lt;h2&gt;2. 유명한 디자인 패러다임들&lt;/h2&gt; 
 
&lt;p&gt;워낙에 정의부터가 명확하지 않기 때문에, 어떤 것을 디자인 패러다임이라고 분류하고 다른 것을 단순한 구현 기법이라고 분류해야 할지에 대해서는 사람에 따라 의견이 일치하지 않을 수 있다. 그나마 독립된 방법론으로서의 가치를 갖는 것만을 나열한다면, 다음과 같은 리스트를 만들 수 있다.&lt;/p&gt; 
 
&lt;ul&gt; 
&lt;li&gt;완전 및 조합 탐색 (exhaustive search, combinatorial search)&lt;/li&gt; 
&lt;li&gt;분할 정복 (divide and conquer)&lt;/li&gt; 
&lt;li&gt;동적 계획법 (dynamic programming)&lt;/li&gt; 
&lt;li&gt;탐욕법 (greedy methods)&lt;/li&gt; 
&lt;li&gt;휴리스틱 (heuristics)&lt;/li&gt; 
&lt;/ul&gt; 
 
&lt;h2&gt;3. 분할 정복&lt;/h2&gt; 
 
&lt;p&gt;분할 정복 패러다임을 차용한 알고리즘들은, 주어진 문제에 대한 답을 구하기 위해 주어진 문제를 (대개) 두 개 이상의 독립적인 부분 문제로 나눈 뒤 각각의 문제에 대한 답을 계산하고, 전체 문제에 대한 답을 부분 문제에 대한 답에서부터 거꾸로 계산해 낸다. 물론 문제를 끝없이 쪼개기만 해서는 언제까지나 답을 구할 수 없기 때문에, 분할 정복을 사용하는 알고리즘들은 대개 문제를 어느 정도 크기로 잘게 자른 후에는 더 이상 나누지 않고 직접 답을 계산해 낸다.&lt;/p&gt; 
 
&lt;p&gt;(이 글에서 문제problem 란, &apos;주어진 배열을 정렬한다&apos; 와 같은 추상적인 작업 목표가 아니라 &apos;1 4 3 2 6 8 을 오름 차순으로 정렬한다&apos; 와 같이 구체적인 입력이 있는 실제 예instance 를 의미한다. 문제를 두 개 이상의 부분 문제subproblem 로 나눈다는 것은 주어진 입력을 두 개 이상의 입력으로 나눈다는 뜻이다. 예를 들어, 정렬의 대상인 수열 1 4 3 2 6 8 을 앞의 세 개 뒤의 세 개로 자르면, 1 4 3 정렬하기와 2 6 8 정렬하기의 두 개의 부분 문제를 얻을 수 있다.)&lt;/p&gt; 
 
&lt;p&gt;따라서, 분할 정복을 사용하는 알고리즘은 대개 다음 세 가지의 구성 요소를 가지고 있다:&lt;/p&gt; 
 
&lt;ul&gt; 
&lt;li&gt;문제를 더 작은 문제로 분할하는 과정 (divide)&lt;/li&gt; 
&lt;li&gt;각 문제에 대해 구한 답을 원래 문제에 대한 답으로 병합하는 과정 (merge)&lt;/li&gt; 
&lt;li&gt;더 이상 답을 분할하지 않고 곧장 풀 수 있는 매우 작은 문제 (base case)&lt;/li&gt; 
&lt;/ul&gt; 
 
&lt;p&gt;분할 정복을 적용해 문제를 해결하기 위해서는 문제에 몇 가지 특성이 성립해야 한다. 우선, 문제를 부분 문제로 나누는 자연스러운 방법이 있어야 하며, 부분 문제에 대한 답을 원래 문제에 대한 답으로 조합해 내는 효율적인 방법이 있어야 한다. 주어진 배열을 크기 순서로 정렬하는 문제에는 이와 같은 특성이 잘 드러난다. 정렬을 위한 분할 정복 알고리즘들인 병합 정렬 (Merge sort) 과 퀵 정렬 (Quick sort) 을 살펴 보면 분할 정복의 구성 요소와 이들이 적용된 방식에 대해 배울 수 있다.&lt;/p&gt; 
 
&lt;p&gt;병합 정렬 알고리즘은 배열을 가운데에서 쪼개 비슷한 크기의 두 개의 배열로 만든 뒤, 이들을 각각 정렬한다. 정렬된 두 개의 배열은 추가적 메모리를 사용하면 쉽게 O(N) 시간에 하나의 배열로 합칠 수 있기 때문이다. 반면, 퀵 정렬 알고리즘은 배열을 단순하게 가운데에서 쪼개는 대신, 병합 과정이 필요 없도록 한 쪽의 배열에 포함된 수가 다른 쪽 배열의 수보다 항상 작은 분할을 만든다. 이를 위해 퀵 정렬은 파티션 (partitioning) 이라고 부르는 단계를 도입하는데, 이는 임의의 기준 원소를 지정한 후 그 원소 이하의 원소를 왼쪽, 이상의 원소를 오른쪽으로 보내는 과정이다.&lt;/p&gt; 
 
&lt;p&gt;이와 같이 두 알고리즘의 구체적인 분할과 합병 방식에는 차이가 있다. 병합 정렬은 가장 간단한 분할 방법을 선택함으로써, 분할 과정을 상수시간 O(1) 만에 수행한다. 대신, 각 부분으로부터 전체의 정렬된 배열을 계산하는 별도의 병합 과정을 둔다. 퀵 정렬은 한 쪽 배열의 수가 다른 쪽보다 항상 작도록 하는 복잡한 분할 과정을 택하는 대신, 병합 과정에 드는 시간을 없앤다.&lt;/p&gt; 
 
&lt;h2&gt;4. 동적 계획법&lt;/h2&gt; 
 
&lt;p&gt;실제의 정의와 영 동떨어진 이름인지도 모르지만, 동적 계획법은 직관적으로 이해하기 매우 어렵고 가장 많은 오해를 불러 일으키는 디자인 패러다임임에 틀림없다. 동적 계획법 (dynamic programming) 이라는 말은 수학의 분과인 최적화 이론 (optimization theory) 에서 왔으며, 우리가 전산학 전반에서 일반적으로 사용하는 동적 (dynamic), 혹은 프로그래밍 (programming) 이란 단어와는 아무런 관련이 없다. (따라서, 동적 계획법을 동적 프로그래밍으로 번역하는 것은 이 패러다임의 본질을 이해하는 것을 저해하는 행동이라고 본인은 강력히 주장한다)&lt;/p&gt; 
 
&lt;p&gt;동적 계획법은 큰 의미에서 분할 정복과 같은 접근 방식을 의미한다. 동적 계획법을 사용하는 알고리즘들 또한 문제에 주어진 문제를 더 작은 문제들로 나눈 뒤 각각의 문제에 대한 답을 계산하고, 이 답들로부터 원래 문제에 대한 답을 계산해 내기 때문이다. 동적 계획법과 분할 정복의 차이를 가져오는 것은 문제를 나누는 방식이다. 동적 계획법에서, 어떤 부분 문제는 두 개 이상의 문제를 푸는 데 사용될 수 있다. 따라서, 이 문제의 답을 두 번 계산하는 대신 한 번만 계산하고 이를 메모리에 캐싱함으로써 속도의 향상을 꾀할 수 있다.&lt;/p&gt; 
 
&lt;h3&gt;4.1. 동적 계획법: 중복되는 부분 문제&lt;/h3&gt; 
 
&lt;p&gt;&lt;a class=&quot;imglink&quot; href=&quot;http://jmk.pe.kr/upload/get/98&quot; title=&quot;분할 정복에서 문제가 나눠지는 방식&quot;&gt;&lt;img style=&quot;text_formatted&quot; src=&quot;http://jmk.pe.kr/upload/get/98/1&quot;&gt;&lt;/a&gt; &lt;a class=&quot;imglink&quot; href=&quot;http://jmk.pe.kr/upload/get/99&quot; title=&quot;동적 계획법에서 문제가 나눠지는 방식&quot;&gt;&lt;img style=&quot;text_formatted&quot; src=&quot;http://jmk.pe.kr/upload/get/99/1&quot;&gt;&lt;/a&gt;&lt;/p&gt; 
 
&lt;p&gt;위의 두 그림은 어떤 가상의 문제에 대해 다른 분할 방식이 불러오는 결과를 보여준다. 왼쪽 그림에서는 각각의 문제들이 서로 연관이 없기 때문에, 단순하게 재귀호출을 통해 문제를 분할해도 한 부분 문제가 한 번만 해결되게 된다. 그러나, 오른쪽 그림에서는, 나눠진 각각의 문제들이 서로 같은 부분 문제에 의존하게 된다. 단순하게 재귀호출을 통해 각 문제를 해결한다고 생각해 보자. 부분 문제 &lt;code&gt;cde&lt;/code&gt; 는 &lt;code&gt;abcde&lt;/code&gt; 를 해결할 때와 &lt;code&gt;cdefg&lt;/code&gt; 를 해결하는 데 한 번씩 계산해야 한다. 그러면 &lt;code&gt;cde&lt;/code&gt; 가 의존하는 &lt;code&gt;c&lt;/code&gt;, &lt;code&gt;de&lt;/code&gt;, &lt;code&gt;f&lt;/code&gt; 들은 각각 세 번씩 계산되게 된다. 문제의 특성에 따라, 이와 같은 계산의 중복 횟수는 분할의 깊이가 깊어질 수록 지수적으로 증가하게 된다. (이와 같은 현상을 흔히 &lt;a href=&quot;http://en.wikipedia.org/wiki/Combinatorial_explosion&quot;&gt;조합 폭발&lt;/a&gt; 이라고 부른다)&lt;/p&gt; 
 
&lt;p&gt;흔히 예로 드는 것이 &lt;a href=&quot;http://en.wikipedia.org/wiki/Binomial_coefficient&quot;&gt;이항 계수&lt;/a&gt;의 계산이다. 이항 계수는 다음과 같은 &lt;a href=&quot;http://en.wikipedia.org/wiki/Recurrence_relation&quot;&gt;점화식&lt;/a&gt; 으로 정의되는 값이다.&lt;/p&gt; 
 
&lt;ul&gt; 
&lt;li&gt;&lt;img src=&quot;http://jmk.pe.kr/cgi-bin/mimetex.cgi?\normalsize{C(n,r) = C(n-1,r-1) + C(n-1,r)}&quot; class=&quot;shift-down-3px&quot; alt=&quot;C(n,r) = C(n-1,r-1) + C(n-1,r)&quot;&gt;&lt;/li&gt; 
&lt;li&gt;&lt;img src=&quot;http://jmk.pe.kr/cgi-bin/mimetex.cgi?\normalsize{C(n,n) = C(n,0) = 1}&quot; class=&quot;shift-down-3px&quot; alt=&quot;C(n,n) = C(n,0) = 1&quot;&gt;&lt;/li&gt; 
&lt;/ul&gt; 
 
&lt;p&gt;이들을 삼각형으로 늘어놓으면 다음과 같이 위 두 수를 더한 꼴이 된다 해서, 이들을 &lt;a href=&quot;http://en.wikipedia.org/wiki/Pascal&apos;s_triangle&quot;&gt;파스칼의 삼각형&lt;/a&gt; 이라고도 부른다.&lt;/p&gt; 
 
&lt;pre&gt;&lt;code&gt;         1
       1   1
     1   2   1  
   1   3   3   1
 1   4   6   4   1
&lt;/code&gt;&lt;/pre&gt; 
 
&lt;p&gt;&lt;code&gt;n&lt;/code&gt;, &lt;code&gt;r&lt;/code&gt; 이 주어졌을 때 &lt;code&gt;nCr&lt;/code&gt; 의 값은 얼마일까? 다음과 같은 초간단 함수를 짤 수 있다:&lt;/p&gt; 
 
&lt;pre name=&quot;code&quot; class=&quot;cpp&quot;&gt; 
int bino(int n, int r) {
    if(r == 0 || n == r) return 1;
    return bino(n-1, r-1) + bino(n-1, r);
}&lt;/pre&gt; 
 
&lt;p&gt;이 때, &lt;code&gt;bino(4,2)&lt;/code&gt; 를 계산하기 위한 함수 호출을 추적해 보면 다음과 같다.&lt;/p&gt; 
 
&lt;pre&gt;&lt;code&gt;bino(4,2) called
  bino(3,1) called
    bino(2,0) called
    bino(2,1) called
      bino(1,0) called
      bino(1,1) called
  bino(3,2) called
    bino(2,1) called
      bino(1,0) called
      bino(1,1) called
    bino(2,2) called
&lt;/code&gt;&lt;/pre&gt; 
 
&lt;p&gt;&lt;code&gt;bino(2,1)&lt;/code&gt; 이 두 번 계산된 것을 알 수 있다. &lt;code&gt;bino(2,1)&lt;/code&gt; 은 &lt;code&gt;bino(3,1)&lt;/code&gt; 을 계산하기 위해서도 필요하고, &lt;code&gt;bino(3,2)&lt;/code&gt; 를 계산하는 데도 필요하기 때문이다. &lt;code&gt;bino(2,1)&lt;/code&gt; 은 또한, 두 번의 재귀호출을 요구하는 &lt;a href=&quot;http://en.wikipedia.org/wiki/Computationally_expensive&quot;&gt;계산적으로 비싼&lt;/a&gt; 함수다. 이와 같은 함수의 호출 수는 &lt;code&gt;n&lt;/code&gt; 과 &lt;code&gt;r&lt;/code&gt; 이 커짐에 따라 기하급수적으로 증가한다. 다음은 &lt;code&gt;n&lt;/code&gt; 이 증가함에 따라 &lt;code&gt;bino(n,n/2)&lt;/code&gt; 를 계산하는 데 필요한 함수 호출의 회수를 플로팅한 것이다:&lt;/p&gt; 
 
&lt;p&gt;&lt;a class=&quot;imglink&quot; href=&quot;http://jmk.pe.kr/upload/get/100&quot; title=&quot;bino() 호출의 횟수&quot;&gt;&lt;img style=&quot;text_formatted&quot; src=&quot;http://jmk.pe.kr/upload/get/100/2&quot;&gt;&lt;/a&gt;&lt;/p&gt; 
 
&lt;p&gt;이와 같은 중복 계산의 오버헤드는 피할 수 없는 숙명일까? 물론 아니다. &lt;code&gt;bino()&lt;/code&gt; 함수는 입력이 정해져 있을 때 출력이 정해져 있다는 사실을 이용하면 간단하게 중복 계산을 제거할 수 있다. 함수 내에서만 접근할 수 있는 정적(static) 배열을 만들어, &lt;code&gt;n&lt;/code&gt; 과 &lt;code&gt;r&lt;/code&gt; 에 대해 함수의 반환값을 저장하면 된다. 함수는 매번 호출될 때마다 이 테이블에 값이 계산되어 저장되어 있나 확인하고, 만약 저장되어 있다면 이것을 즉시 반환한다. 아닐 경우, 함수는 이 값을 계산한 후 반환 전에 테이블에 써 넣는다.&lt;/p&gt; 
 
&lt;pre name=&quot;code&quot; class=&quot;cpp&quot;&gt; 
int bino2(int n, int r) {
    if(r == 0 || n == r) return 1;
    static int cache[20][20];
    if(cache[n][r]) return cache[n][r]; // 0 이 아니라면 이미 계산됨
    return cache[n][r] = bino2(n-1, r-1) + bino2(n-1, r); // 계산 후 반환하면서 저장
}&lt;/pre&gt; 
 
&lt;p&gt;위 코드는 이와 같은 방식을 구현한다. (이 기법을 &lt;a href=&quot;http://en.wikipedia.org/wiki/Memoization&quot;&gt;메모이제이션memoization&lt;/a&gt; 이라고 부른다. 메모라이제이션memorization 이 아니다.) 이 알고리즘의 함수 호출 회수를 플로팅해 보면 다음 그림을 얻을 수 있다.&lt;/p&gt; 
 
&lt;p&gt;&lt;a class=&quot;imglink&quot; href=&quot;http://jmk.pe.kr/upload/get/101&quot; title=&quot;bino2() 의 호출 회수&quot;&gt;&lt;img style=&quot;text_formatted&quot; src=&quot;http://jmk.pe.kr/upload/get/101/2&quot;&gt;&lt;/a&gt;&lt;/p&gt; 
 
&lt;p&gt;&lt;code&gt;n&lt;/code&gt; 이 증가함에 따라 지수적으로 증가하던 함수 호출이 캐싱을 통해 상수 증가로 바뀐 것을 볼 수 있다. 이렇게, 동적 계획법은 두 번 이상 반복되어 계산되는 &lt;a href=&quot;http://en.wikipedia.org/wiki/Overlapping_subproblems&quot;&gt;중복 부분 문제&lt;/a&gt; (overlapping subproblems) 를 한 번만 풀음으로써 조합 폭발 현상을 해결하며, 이와 같은 특성이 동적 계획법의 상징이라고 할 수 있다. 이와 같은 의미에서, 동적 계획법을 메모리-시간 간의 트레이드오프라고 할 수도 있다.&lt;/p&gt; 
 
&lt;h3&gt;4.2. 최적화 문제와 동적 계획법&lt;/h3&gt; 
 
&lt;p&gt;동적 계획법은 처음에 &lt;a href=&quot;http://en.wikipedia.org/wiki/Optimization_problem&quot;&gt;최적화 문제&lt;/a&gt; 들을 풀기 위한 수단으로 고안되었다. 계산 복잡도 이론이나 수학에서 이야기하는 최적화 문제란, 여러 개의 가능한 답 (feasible solutions) 이 존재하고, 그 중 가장 좋은 답을 찾아내는 문제를 말한다. 그래프 위에서의 최단 거리 문제, 최장 거리 증가 부분 수열 등의 유명한 문제들이 모두 최적화 문제다.&lt;/p&gt; 
 
&lt;p&gt;동적 계획법이 최적화 문제에 성공적으로 적용되려면, 중복 부분 문제 말고도 또 다른 특성이 필요하다. 다름 아닌 &lt;a href=&quot;http://en.wikipedia.org/wiki/Optimal_substructure&quot;&gt;최적 부분 구조&lt;/a&gt;라는 것이다. 이것은 주어진 문제를 두 개 이상으로 쪼개면, 전체 문제에 대한 최적해는 쪼갠 부분문제들의 최적해로 구성할 수 있다는 것이다. 예를 들어 말하자면, 서울부터 부산까지 가는 최단 경로를 서울-대전, 대전-부산 구간으로 나누면, 각 구간에서도 최단 경로로 움직여야 한다는 이야기다.&lt;/p&gt; 
 
&lt;p&gt;&lt;img style=&quot;text_formatted&quot; src=&quot;http://jmk.pe.kr/upload/get/102/4&quot; title=&quot;서울-부산 구간이 최단 경로려면, 서울-대전, 대전-부산 구간도 최단 경로여야 한다&quot;&gt;&lt;/p&gt; 
 
&lt;p&gt;어찌 보면 별 것 아닌 얘기기는 한데, 이와 같은 속성이 성립하지 않는 문제도 가끔 있으니 이와 같은 조건에 이름을 붙인 것이 이해는 간다. 그런데, 실제로 최적 부분 구조가 동적 계획법의 존재에 필수 불가결한 요소가 되는 것으로 오해하는 경우가 많다. 이 최적 부분 구조라는 것은, 애초에 답이 여러 개 있는 최적화 문제에나 통용되는 이야기다. 위에서 이항 계수 구할 때 답이 될 수 있는 이항 계수가 여러 개 있었는가? -_-;&lt;/p&gt; 
 
&lt;p&gt;엄격하게 말하자면, 동적 계획법은 처음 고안될 때는 최적화 문제를 풀기 위한 도구로 만들어졌다. 지금도 &lt;a href=&quot;http://highered.mcgraw-hill.com/sites/0070131511/&quot;&gt;Introduction to Algorithms&lt;/a&gt; 등의 교과서에서는 동적 계획법의 예제로 최적화 문제만을 포함하곤 한다. 하지만 현재 이 단어는 변질되어, 중복되는 부분 문제를 캐싱함으로써 최적화하는 모든 알고리즘에 적용되는 것으로 받아들여 지고 있다. 실제로 동적 계획법에 대한 &lt;a href=&quot;http://en.wikipedia.org/wiki/Dynamic_programming&quot;&gt;위키페디아 페이지&lt;/a&gt; 를 보면, 동적 계획법의 예로 들고 있는 것이 &lt;a href=&quot;http://en.wikipedia.org/wiki/Dynamic_programming#Fibonacci_sequence&quot;&gt;피보나치 수열&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Dynamic_programming#A_type_of_balanced_0-1_matrix&quot;&gt;특정 조건을 만족하는 행렬의 수&lt;/a&gt; 등인데, 이들은 최적화 문제가 전혀 아니다.&lt;/p&gt; 
 
&lt;p&gt;현재, 동적 계획법이란 단어는 최적화 문제 해결의 도구만이 아니라 중복 부분 문제를 캐싱을 통해 해결하는 모든 알고리즘을 지칭하도록 확대되고 있다고 보는 것이 옳다.&lt;/p&gt; 
 
&lt;h3&gt;4.3. 분할 방식에 따른 문제 특성의 변화&lt;/h3&gt; 
 
&lt;p&gt;중복 부분 문제를 해결하는 것이 동적 계획법의 본질이라고 이야기했다. 그런데, 이 중복 부분 문제라는 특성은 해결하려는 문제에 따라 결정되는 것일까? 아니면 우리가 문제를 나누는 방법에 따라 결정되는 것일까? 정답은 어느 한 쪽이 아니라, 둘 다라고 할 수 있다.&lt;/p&gt; 
 
&lt;p&gt;행렬 &lt;img src=&quot;http://jmk.pe.kr/cgi-bin/mimetex.cgi?\normalsize{A}&quot; class=&quot;shift-down-3px&quot; alt=&quot;A&quot;&gt; 의 자승 (power) &lt;img src=&quot;http://jmk.pe.kr/cgi-bin/mimetex.cgi?\normalsize{A^m}&quot; class=&quot;shift-down-3px&quot; alt=&quot;A^m&quot;&gt; 을 구하는 문제를 생각해 보자. &lt;img src=&quot;http://jmk.pe.kr/cgi-bin/mimetex.cgi?\normalsize{m}&quot; class=&quot;shift-down-3px&quot; alt=&quot;m&quot;&gt; 이 작으면 단순하게 &lt;img src=&quot;http://jmk.pe.kr/cgi-bin/mimetex.cgi?\normalsize{O(nm^3)}&quot; class=&quot;shift-down-3px&quot; alt=&quot;O(nm^3)&quot;&gt; 의 알고리즘을 써서 계산할 수 있겠지만, &lt;img src=&quot;http://jmk.pe.kr/cgi-bin/mimetex.cgi?\normalsize{m}&quot; class=&quot;shift-down-3px&quot; alt=&quot;m&quot;&gt; 이 10만 단위로 커지면 실질적인 사용이 어려워진다. 이럴 때 구세주가 되는 것이 분할 정복이다. &lt;img src=&quot;http://jmk.pe.kr/cgi-bin/mimetex.cgi?\normalsize{m}&quot; class=&quot;shift-down-3px&quot; alt=&quot;m&quot;&gt; 이 짝수라면, 다음과 같이 한 번에 &lt;img src=&quot;http://jmk.pe.kr/cgi-bin/mimetex.cgi?\normalsize{m}&quot; class=&quot;shift-down-3px&quot; alt=&quot;m&quot;&gt; 을 절반으로 뚝 자를 수 있기 때문이다.&lt;/p&gt; 
 
&lt;div class=&quot;math&quot;&gt;&lt;img src=&quot;http://jmk.pe.kr/cgi-bin/mimetex.cgi?A^{2x} = A^{x}A^{x}&quot; alt=&quot;A^{2x} = A^{x}A^{x}&quot;&gt;&lt;/div&gt; 
 
&lt;p&gt;하지만 &lt;img src=&quot;http://jmk.pe.kr/cgi-bin/mimetex.cgi?\normalsize{m}&quot; class=&quot;shift-down-3px&quot; alt=&quot;m&quot;&gt; 이 홀수라면 어떨까? 대개 이런 경우 문제를 나누는 패턴은 둘 중 하나가 되는데, 1을 빼는 것과 절반으로 자르는 것이다:&lt;/p&gt; 
 
&lt;div class=&quot;math&quot;&gt;&lt;img src=&quot;http://jmk.pe.kr/cgi-bin/mimetex.cgi?A^{2x+1} = A^{2x}A&quot; alt=&quot;A^{2x+1} = A^{2x}A&quot;&gt;&lt;/div&gt; 
 
&lt;div class=&quot;math&quot;&gt;&lt;img src=&quot;http://jmk.pe.kr/cgi-bin/mimetex.cgi?A^{2x+1} = A^{x}A^{x+1}&quot; alt=&quot;A^{2x+1} = A^{x}A^{x+1}&quot;&gt;&lt;/div&gt; 
 
&lt;p&gt;어느 쪽이 실제로 더 유리할까? 얼핏 생각하면, 짝수일 때와 같이 절반씩으로 나누는 것이 문제의 크기를 지수적으로 줄이므로 더 유리해 보인다. 하지만, 반복되는 부분 문제를 생각해 보면 얘기가 달라진다. 두 분할 방식에서 &lt;img src=&quot;http://jmk.pe.kr/cgi-bin/mimetex.cgi?\normalsize{A^{31}}&quot; class=&quot;shift-down-3px&quot; alt=&quot;A^{31}&quot;&gt; 을 계산하기 위해 필요한 의존 관계를 각각 그래프로 나타내면 다음 그림과 같다.&lt;/p&gt; 
 
&lt;div class=&quot;math&quot;&gt; 
&lt;a class=&quot;imglink&quot; href=&quot;http://jmk.pe.kr/upload/get/104&quot; title=&quot;절반씩 나누는 방법&quot;&gt;&lt;img style=&quot;text_formatted&quot; src=&quot;http://jmk.pe.kr/upload/get/104/3&quot;&gt;&lt;/a&gt; 
&lt;br&gt; 
&lt;a class=&quot;imglink&quot; href=&quot;http://jmk.pe.kr/upload/get/105&quot; title=&quot;1씩 줄이는 방법&quot;&gt;&lt;img style=&quot;text_formatted&quot; src=&quot;http://jmk.pe.kr/upload/get/105/3&quot;&gt;&lt;/a&gt; 
&lt;/div&gt; 
 
&lt;p&gt;비슷해 보이고 실제 계산해야 하는 값의 개수도 같아 보이지만, 위 그래프와 아래 그래프는 계산의 횟수에 큰 차이가 있다. 아래 그래프에서 모든 값은 최대 한 번씩만 계산된다. 그러나, 위 그래프에서는 얘기가 다르다. &lt;img src=&quot;http://jmk.pe.kr/cgi-bin/mimetex.cgi?\normalsize{A^8}&quot; class=&quot;shift-down-3px&quot; alt=&quot;A^8&quot;&gt; 은 &lt;img src=&quot;http://jmk.pe.kr/cgi-bin/mimetex.cgi?\normalsize{A^{15}}&quot; class=&quot;shift-down-3px&quot; alt=&quot;A^{15}&quot;&gt; 와 &lt;img src=&quot;http://jmk.pe.kr/cgi-bin/mimetex.cgi?\normalsize{A^{16}}&quot; class=&quot;shift-down-3px&quot; alt=&quot;A^{16}&quot;&gt; 을 계산할 때 각각 사용되므로, 두 번 계산되어야 한다. &lt;img src=&quot;http://jmk.pe.kr/cgi-bin/mimetex.cgi?\normalsize{A^4}&quot; class=&quot;shift-down-3px&quot; alt=&quot;A^4&quot;&gt; 는 세 번, &lt;img src=&quot;http://jmk.pe.kr/cgi-bin/mimetex.cgi?\normalsize{A^3}&quot; class=&quot;shift-down-3px&quot; alt=&quot;A^3&quot;&gt; 는 네 번 계산된다. 그래서, 실제 행렬의 곱셈 회수는 &lt;img src=&quot;http://jmk.pe.kr/cgi-bin/mimetex.cgi?\normalsize{m}&quot; class=&quot;shift-down-3px&quot; alt=&quot;m&quot;&gt; 에 대해 &lt;em&gt;선형적으로 증가하게 된다&lt;/em&gt;! 이것을 해결하기 위해서는 중복 계산되는 값을 저장할 필요가 있는데, 그러면 &lt;img src=&quot;http://jmk.pe.kr/cgi-bin/mimetex.cgi?\normalsize{O(m)}&quot; class=&quot;shift-down-3px&quot; alt=&quot;O(m)&quot;&gt; 에 비례하는 메모리가 필요해진다. 반면, 아래 그래프에서는 모든 값이 한 번씩만 계산된다. &lt;img src=&quot;http://jmk.pe.kr/cgi-bin/mimetex.cgi?\normalsize{A^{2x+1}=A^{x}A^{x}A}&quot; class=&quot;shift-down-3px&quot; alt=&quot;A^{2x+1}=A^{x}A^{x}A&quot;&gt; 라는 점에 유의해 보면, 전체 곱셈의 회수는 &lt;img src=&quot;http://jmk.pe.kr/cgi-bin/mimetex.cgi?\normalsize{O(lg m)}&quot; class=&quot;shift-down-3px&quot; alt=&quot;O(lg m)&quot;&gt; 이 된다는 것을 알 수 있다. 별도의 메모리를 사용하지 않고도 이와 같은 효율을 얻을 수 있는 것이다.&lt;/p&gt; 
 
&lt;p&gt;이와 같이, 같은 문제에서라도 어떤 방식으로 문제를 분할하느냐에 따라 중복되는 부분 문제가 등장할 수도 있고 등장하지 않을 수도 있다.&lt;/p&gt; 
 
&lt;h3&gt;4.4 반복 스타일 (iterative style) 동적 계획법&lt;/h3&gt; 
 
&lt;p&gt;지금까지는 동적 계획법을 설명하기 위해, 재귀 호출을 이용한 분할 정복 코드에 메모이제이션으로 캐싱을 붙이는 예제만 들었다. 하지만 점화식이 간단하다면, 재귀호출을 사용하지 않고 가장 작은 부분 문제 (base case) 로부터 답을 거꾸로 계산해 올라가는 일이 가능하다.&lt;/p&gt; 
 
&lt;p&gt;위에서 예로 들었던 이항 계수의 계산이 좋은 예가 될 수 있다. 파스칼의 삼각형에서 각 숫자를 계산하기 위해서는 바로 윗줄의 숫자만 있으면 된다. 따라서, 제일 윗 줄부터 순서대로 아랫 줄로 내려가면서 각 자리에 있는 숫자를 계산한다고 하면, 윗줄에 있는 숫자들은 이미 계산한 뒤이기 때문에 재귀호출 할 필요가 없이 테이블에서 직접 값을 가져올 수 있다. 다음과 같이 말이다:&lt;/p&gt; 
 
&lt;pre name=&quot;code&quot; class=&quot;cpp&quot;&gt; 
int bino[20][20];
bino[0][0] = 1;
for(int i = 1; i &amp;lt; 20; ++i) {
    bino[i][0] = 1;
    for(int j = 1; j &amp;lt;= i; ++j)
        bino[i][j] = bino[i-1][j] + bino[i-1][j-1];
}&lt;/pre&gt; 
 
&lt;p&gt;이와 같이, 부분문제들의 의존성이 명확한 순서를 가질 때는, 재귀호출을 사용하지 않고 반복적인 (iterative) 프로그램을 짤 수 있다. 이 때, 프로그램은 해당 부분문제를 해결하는 재귀호출을 행하는 것이 아니라 테이블의 해당 위치에 있는 값을 직접 가져온다. 이와 같은 방법을 사용하기 위해서는 답을 계산하는 순서에 유의해야 하지만, 재귀호출에 드는 오버헤드가 없기 때문에 평균적으로는 재귀호출과 함께 메모이제이션을 사용하는 방법보다 좀 더 빠른 경향이 있다.&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>PC^2 external validator</title>
      <id>http://algospot.com/zbxe/51625</id>
      <published>2008-10-29T03:13:26+09:00</published>
      <updated>2008-11-01T01:24:52+09:00</updated>
      <link rel="alternate" type="text/html" href="http://algospot.com/zbxe/51625"/>
      <link rel="replies" type="text/html" href="http://algospot.com/zbxe/51625#comment"/>
      <author>
         <name>Being</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;div&gt;PC^2는 자체 validator class를 내장하고 있습니다. 그런데 이 클래스가 매우 빈약하고 골치아픕니다. 이 클래스로 인한 문제는 지난 알고스팟 1주년 기념 모의고사에서의 대량 리저지 사태가 대표적입니다. 이 리저지에는 두 가지 요인이 있었는데,&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;* 저지의 답안이 500kb를 넘는데, 사용자의 답안으로부터 출력을 얻어낼 때에 500kb를 넘겨 강제로 500kb에서 잘림&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;* trailing space (맨 뒤에 뒤따라오는 공백들)를 무시하지 않아 맨 뒤에 공백을 저지의 답안과 다르게 출력한 경우 WA로 처리되는 현상&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;이 두 가지입니다. 후자의 경우 제가 2007년 베트남 다낭 사이트 리져널에 갔을 때....(남자는 웁니다) A를 fastest? 2nd fastest?로 냈는데 WA가 나와서 대회 시간 내내 고민하다가 297분만에 맨 뒤에 공백을 지우니 Yes가 된 경험에도 연결되어 있네요. (당시 그쪽 환경은 완전히 automated judge여서, 리저지따위 할 생각이 없었죠..)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;그래서 지난 알고스팟 모의고사 때는 (두 번째 요인 관련해서) 답안을 모두 손으로...까진 아니고 저의 경우는 생성된 결과 파일을 vim으로 띄워 %s/ $//g하고 fc를 사용하여 일일이 비교했었는데, 다행히도 PC^2는 external validator를 지원합니다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;이 external validator는 생각보다 간단합니다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;PC^2에서 external validator를 설정하면, execution 이후에 validator를 실행합니다.&lt;br&gt;&lt;/li&gt;&lt;li&gt;이 validator에는 input file, output file, answer file, result file path, validator 총 다섯 개의 변수가 전달될 수 있습니다. 이 변수들은 PC^2의 문제 설정에서 Validator Command Line에 지정될 수 있습니다.&lt;br&gt;&lt;/li&gt;&lt;li&gt;각각의 변수가 의미하는 바는 다음과 같습니다.&lt;/li&gt;&lt;ol&gt;&lt;li&gt;input file {:infile} 은 말 그대로 입력 파일입니다. &lt;br&gt;&lt;/li&gt;&lt;li&gt;output file {:outfile} 은 실행하여 만들어낸 사용자의 답안입니다.&lt;br&gt;&lt;/li&gt;&lt;li&gt;answer file {:ansfile} 은 저지의 답안입니다.&lt;br&gt;&lt;/li&gt;&lt;li&gt;result file path {:resfile} 는 PC^2가 임의로 지정하는 경로로써, 이 경로에 표준 형식에 맞는 XML을 출력하면 됩니다(새로운 파일을 생성하면 됩니다).&lt;br&gt;&lt;/li&gt;&lt;li&gt;validator {:validator} 는 PC^2의 problem 설정에서, validator program으로 지정하는 파일입니다. 이 파일은 서버에 보관되고 있다가 저지가 답안을 채점할 때마다 복사됩니다. 이 성질 때문에 파일은 여러 가지로 유용하게 사용할 수 있습니다. &lt;br&gt;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;먼저, 이 파일을 (이를테면) validator.exe라는 파일로 둠으로써 저지가 미리 이러한 파일들을 시스템에 설치하지 않고도 채점할 때 자동으로 서버에서 내려받아 실행하게 할 수 있습니다.&lt;br&gt;&lt;/li&gt;&lt;li&gt;이 파일을 어떤 다른 validator에 인자로 전달할 수 있습니다. 예를 들어서 validator로 지정된 파일이 루비 스크립트 파일이라면, ruby {:validator} ... 와 같이 실행시킬 수 있습니다. 위에서와 마찬가지로 이 파일은 매번 복사됩니다.&lt;br&gt;&lt;/li&gt;&lt;li&gt;이 파일을 무시해도 됩니다. 그런데 이 파일이 없으면 귀찮은 문제가 발생하므로, 아무 파일이나 설정하면 됩니다. (단, 설정한 파일의 길이가 0이면 또 칭얼대니 1바이트 이상인 파일로 설정) 이렇게 설정한 경우, 모든 저지들의 특정한 절대경로에 validator들을 준비하거나 저지들이 각자 PATH 변수를 등록하게 해서 실행해야 할 것입니다.&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;li&gt;result file에 저장되어야 하는 xml의 형식은 다음과 같습니다. (xsd가 있긴 한데 그런 거 필요 없을 정도로 간단합니다)&lt;br&gt;[code xml]&lt;br&gt;&amp;lt;?xml version=&quot;1.0&quot;?&gt;&lt;br&gt;&amp;lt;result outcome=&quot;###&quot; security=&quot;@@@&quot;&gt;%%%&amp;lt;/result&gt;&lt;br&gt;[/code]&lt;ol&gt;&lt;li&gt;###에는 PC^2에 지정된 result message를 그대로 써 주시면 됩니다. (default message에는 &quot;Yes&quot;, &quot;No - Wrong Answer&quot; 등이 있겠죠).&lt;br&gt;&lt;/li&gt;&lt;li&gt;@@@에는 이 파일의 이름 - {:resfile} - 을 그대로 써 주시면 됩니다. 보안을 위해 만든 부분이라고 하네요. (e.g. 784XRSAM.txt)&lt;/li&gt;&lt;li&gt;%%%에는 메세지를 써 주실 수 있는데, 큰 의미는 없습니다.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;첨부된 파일은 이번 알고스팟 모의고사에서 (아마도) 사용될 validator입니다. JM님이 알고스팟 저지를 완성하시면 용도폐기되겠습니다만.. ruby로 코드되어 있습니다(만 이딴걸 루비 코드냐고 할 정도로 루비답지 못합니다...ㅠㅠ). 커맨드라인 옵션 때문에 gem을 하나 사용합니다. gem install -r OptionParser 명령으로 설치해 주시면 됩니다. 현재 작업 디렉토리와 관계없이 잘 작동해서, PC^2에서 설정할 때에는 ruby c:\validator\main.rb와 같이 설정해 주시면 됩니다. 여러 개의 파일로 구성된 까닭에, {:validator} 변수를 적절히 사용하기는 어렵습니다. 아래는 option list page입니다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;OPTIONS&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;    --validator,-v&lt;/div&gt;&lt;div&gt;        Specifies validator class name (default: Validator)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;    --input,-i&lt;/div&gt;&lt;div&gt;        Specifies input data file&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;    --output,-o&lt;/div&gt;&lt;div&gt;        Specifies contestant&apos;s output file&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;    --answer,-a&lt;/div&gt;&lt;div&gt;        Specifies judge&apos;s answer file&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;    --result,-r&lt;/div&gt;&lt;div&gt;        Specifies path to generate xml-formatted file&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;    --left-strip,-L&lt;/div&gt;&lt;div&gt;        Set to strip any leading whitespaces&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;    --right-strip,-R&lt;/div&gt;&lt;div&gt;        Set to strip any trailing whitespaces&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;    --ignore-empty-lines,-E&lt;/div&gt;&lt;div&gt;        Set to ignore all empty lines&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;    --remove-whitespace,-A&lt;/div&gt;&lt;div&gt;        Set to remove all whitespaces&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;    --ignore-case,-C&lt;/div&gt;&lt;div&gt;        Set to ignore cases&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;    --help,-h&lt;/div&gt;&lt;div&gt;        Prints this page&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;예를 들어,&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;ruby main.rb -i input.txt -o output.txt -a output.ans -r result.xml&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;와 같이 하면 아무런 옵션 없이 line-by-line 비교를 수행합니다 (공백까지 철저히). 만약에 trailing space를 무시하고 싶다면 -R 옵션을 주시면 됩니다. 그렇게 PC^2에서 설정할 때에는 &lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;ruby c:\validator\main.rb -i {:infile} -o {:outfile} -a {:ansfile} -r {:resfile} -R&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;위와 같이 설정하면 됩니다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-v 옵션은 validator class를 지정하는 옵션인데, 압축을 풀어 보시면 알겠지만 ./extras/ 에 FloatingPointValidator.rb 파일이 있습니다. 이 파일에는 실수 오차를 고려하는 FloatingPointValidator 클래스가 구현되어 있습니다. 그래서, -v FloatingPointValidator 옵션을 주면 이 클래스를 사용하여 비교를 수행합니다. 이외에 추가하고 싶으신 클래스가 있으시다면 이 파일을 참조해서 구현하신 후, ./extras/ 디렉토리에 넣어 주시면 main.rb가 스캔하여 모든 파일을 불러옵니다. ./tests/ 디렉토리에는 unit test가 있습니다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;사족: -v 옵션에서 지정한 파일만 require 하게 구현했으면 훨씬 깔끔했을텐데 아쉽네요. 더 손대기는 귀찮고..&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>PC^2 의 컴파일 환경 설정 (Test/Judge)</title>
      <id>http://algospot.com/zbxe/49656</id>
      <published>2008-09-20T03:54:23+09:00</published>
      <updated>2008-09-20T03:55:37+09:00</updated>
      <link rel="alternate" type="text/html" href="http://algospot.com/zbxe/49656"/>
      <link rel="replies" type="text/html" href="http://algospot.com/zbxe/49656#comment"/>
      <author>
         <name>Being</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;PC^2에서 Judge를 수행하거나 Test 기능을 사용하기 위해서는, 서버에서 정의된 컴파일 명령을 지원할 수 있도록 시스템의 설정을 변경하여야 합니다. Test 기능을 사용하시는 것보다는 직접 콘솔이나 IDE에서 해결하시기를 바랍니다마는, 기능이 혹시 필요하신 분들은 아래의 절차를 따라 주십시오. 이 글은 Windows 시스템을 기준으로 합니다.&lt;br&gt;&lt;br&gt;제어판-시스템-고급-환경 변수에서 아래의 경로를 추가합니다. (여러 원소를 구분할 때는 ; 기호를 사용하고, 없는 변수는 새로이 생성합니다)&lt;br&gt;&lt;br&gt;&lt;b&gt;* Visual C++ 사용자의 경우 (9.0 기준)&lt;/b&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;INCLUDE 변수에 (Visual Studio 설치 경로)\VC\include 추가&lt;br&gt;&amp;nbsp;LIB 변수에 (Visual Studio 설치 경로)\VC\lib 추가&lt;br&gt;&amp;nbsp;LIB 변수에 (Microsoft SDK 설치 경로)\Windows\v6.0A\Lib 추가&lt;br&gt;&amp;nbsp;PATH 변수에 (Visual Studio 설치 경로)\VC\bin 추가&lt;br&gt;&amp;nbsp;PATH 변수에 (Visual Studio 설치 경로)\Common7\IDE 추가&lt;br&gt;&lt;br&gt;# 다른 버전이어서 해당하는 경로가 없는 경우 VC7 등의 상이한 경로를 찾아 보시기 바랍니다.&lt;br&gt;&lt;br&gt;# VC 6.0 사용자의 경우 설정이 약간 상이할 수 있으나 비슷합니다. 가급적이면 6.0을 사용하지 않는 것을 추천합니다.&lt;br&gt;&lt;br&gt;&lt;i&gt;확인: Command Prompt에서 cl 이라고 입력해 봅니다.&lt;/i&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;&lt;br&gt;&lt;br&gt;* Sun Java 사용자의 경우&lt;/b&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;PATH 변수에 (JDK 설치 경로)\bin 추가&lt;br&gt;&lt;br&gt;&lt;i&gt;확인: Command Prompt에서 javac -version 이라고 입력해 봅니다.&lt;/i&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;&lt;br&gt;&lt;br&gt;* GNU C/C++ Compiler (MinGW) 사용자의 경우&lt;/b&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;PATH 변수에 (mingw 설치 경로)\bin 추가&lt;br&gt;&lt;br&gt;&lt;i&gt;확인: Command Prompt에서 gcc/g++ -dumpversion 이라고 입력해 봅니다.&lt;/i&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>대회 채점을 위해서 사용하게 될 PC^2와 설명법입니다.</title>
      <id>http://algospot.com/zbxe/49641</id>
      <published>2008-09-20T03:51:56+09:00</published>
      <updated>2009-05-18T03:02:18+09:00</updated>
      <link rel="alternate" type="text/html" href="http://algospot.com/zbxe/49641"/>
      <link rel="replies" type="text/html" href="http://algospot.com/zbxe/49641#comment"/>
      <author>
         <name>리베</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;이번 algospot.com 1주년 모의고사에서나, ACM-ICPC에서 대회 진행을 위해 사용하게될 PC^2에 대해 소개를 하고자 글을 적습니다.&lt;br&gt;&lt;br&gt;이 글에서는 우선 참가자가 서울대회와 유사하게 Windows 기반에서 참가를 한다고 가정을 하겠습니다.&lt;br&gt;&lt;br&gt;우선 2개의 파일이 필요합니다.&lt;br&gt;&lt;br&gt;PC^2는 Java기반으로 구현이 되어있기 때문에 Java Runtime Enviroment가 필요합니다. 기존에 설치되신 분은 설치하지 않으셔도 되지만, 그렇지 않은 분들은 다음 링크를 통해 다운로드를 받습니다. &lt;a href=&quot;http://shovel.redfeel.net/%7Elibe/pc2/jre.exe&quot;&gt;http://shovel.redfeel.net/~libe/pc2/jre.exe&lt;/a&gt;&lt;br&gt;&lt;br&gt;설치에 대해서는 간단하게 next버튼을 몇번 누르면 설치가 되니 이 부분에 대한 자세한 설명은 생략합니다.&lt;br&gt;&lt;br&gt;그 다음 다음 링크를 통해 pc^2를 다운로드를 받고 압축을 풀어줍니다. &lt;a href=&quot;http://shovel.redfeel.net/%7Elibe/pc2/PC2.zip&quot;&gt;http://shovel.redfeel.net/~libe/pc2/PC2.zip&lt;/a&gt;&lt;br&gt;&lt;br&gt;압축이 풀리면 pc2_client라고 풀린 폴더가 보일 것이고 안에는 다음과 같이 구성되어 있습니다.&lt;br&gt;&lt;br&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/641/049/1.PNG&quot; alt=&quot;1.PNG&quot; title=&quot;1.PNG&quot; class=&quot;iePngFix&quot; style=&quot;&quot; /&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;여기서 bin폴더내의 pc2team.bat를 실행합니다.&lt;br&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/641/049/2.PNG&quot; alt=&quot;2.PNG&quot; title=&quot;2.PNG&quot; class=&quot;iePngFix&quot; style=&quot;&quot; /&gt;&lt;br&gt;&lt;br&gt;&lt;div style=&quot;text-align: left;&quot;&gt;실행이 정상적으로 될 경우 아래와 같은 화면이 나오며, 메일을 통해 받게된 아이디와 비밀번호를 입력해주시고 Login 버튼을 누릅니다&lt;br&gt;.&lt;br&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/641/049/3.PNG&quot; alt=&quot;3.PNG&quot; title=&quot;3.PNG&quot; class=&quot;iePngFix&quot; style=&quot;&quot; /&gt;&lt;br&gt;&lt;br&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;접속에 성공하면 아래와 같은 그럴싸 한 화면 이 보이는데요, 여기서 중요한 부분을 설명드리자면, 맨 왼쪽의 숫자는 남은 시간을 뜻합니다. 그리고 Problem과 Language의 경우 자신이 채점받을 문제와, 해당 문제를 풀기위해 사용한 컴파일러를 선택하는 부분이고요, 그리고 제출할 소스코드는 Main File내에 있는 Select를 통해 선택해줍니다. &lt;br&gt;&lt;br&gt;Additional File의 경우 그닥 쓸모 없는 내용이니 넘어갑니다.&lt;br&gt;그 다음 Test 버튼의 경우, 컴파일이 제대로 되는지, 컴파일이 제대로 되었을 경우 자신이 만들거나 기본 예제의 입력파일을 선택하여 프로그램이 제대로 동작하는지 판별하는 부분인데요, 이 부분의 경우 컴퓨터 자체의 별도의 경로설정이 되지 않을 경우 제대로 동작하지 않기 때문에 이 부분이 안된다고 너무 걱정하실 필요는 없습니다(실제로 제 경험상 대회에 이 기능을 유용하게 써본 기억은 별로 없는듯 합니다.) 만약 테스트를 반드시 쓰셔야 겠다! 하시는 분은 다음 글을 참고해주시기 바랍니다. &lt;a href=&quot;http://algospot.com/zbxe/49656&quot;&gt;http://algospot.com/zbxe/49656&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/641/049/4.PNG&quot; alt=&quot;4.PNG&quot; title=&quot;4.PNG&quot; class=&quot;iePngFix&quot; style=&quot;&quot; /&gt;&lt;br&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br&gt;채점을 받기 위해서는 Submit버튼을 누르게 되는데요, 그렇게 되면 다음과 같이 정말 제출 할것이냐? 하는 메시지박스가 뜨게 됩니다. 여기서 Yes를 누르게 되면 바로 제출이 되어 채점자에게 코드가 넘어가게 되는것이죠.&lt;br&gt;&lt;br&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/641/049/5.PNG&quot; alt=&quot;5.PNG&quot; title=&quot;5.PNG&quot; class=&quot;iePngFix&quot; style=&quot;&quot; /&gt;&lt;br&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br&gt;정상적으로 제출이 되었을 경우에는 다음과 같은 메시지가 뜨게 됩니다. &lt;br&gt;&lt;br&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/641/049/6.PNG&quot; alt=&quot;6.PNG&quot; title=&quot;6.PNG&quot; class=&quot;iePngFix&quot; style=&quot;&quot; /&gt;&lt;br&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br&gt;다음은 채점자가 채점을 마치고 판정 결과를 통보해주는 화면입니다. 왼쪽은 정답일 경우이고, 오른쪽은 정답이 아닌 경우인데, 정답이 아닌 경우는 다음과 같이 잘못된 사유가 첨부되어서 전달됩니다.&lt;br&gt;&lt;br&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/641/049/7.PNG&quot; alt=&quot;7.PNG&quot; title=&quot;7.PNG&quot; class=&quot;iePngFix&quot; style=&quot;width: 299px; height: 317px;&quot; /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/641/049/8.PNG&quot; alt=&quot;8.PNG&quot; title=&quot;8.PNG&quot; class=&quot;iePngFix&quot; style=&quot;width: 332px; height: 316px;&quot; /&gt;&lt;br&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br&gt;정답이 아닌 경우에 대한 이유는 여러가지가 있는데 정리하면 다음과 같습니다.&lt;br&gt;&lt;img src=&quot;file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/moz-screenshot-3.jpg&quot; alt=&quot;&quot;&gt;Comilation Error - 컴파일이 제대로 되지 않았을 경우, 이 역시 정답이 아닌것으로 간주합니다.&lt;br&gt;Run-time Error - 실행 도중에 예기지 못한 결과가 발생하여 프로그램이 종료되었을 경우를 뜻합니다.&lt;br&gt;Time-limit Exceeded - 제한된 시간 내에 프로그램이 실행이 끝나지 않았을 경우를 뜻합니다.&lt;br&gt;Wrong Answer - 프로그램은 정상적으로 동작하였으나 출력된 답이 정답과 다를 경우를 뜻합니다.&lt;br&gt;Excessive Output -예상보다 많은 출력이 발생 하였을 경우를 뜻합니다.&lt;br&gt;Output Format Error - 답은 일치하는 듯 하나, 출력 형식을 어겼을 경우를 뜻합니다. 이 부분 역시 정답이 아닌것으로 간주합니다.&lt;br&gt;Other Contact Staff - 예기치 못한 오류가 발생하였기 때문에, 해당 오류가 발생할 경우 바로 주최측에 연락하길 바랍니다.&lt;br&gt;&lt;br&gt;그 다음 설명할 것은 문제를 풀거나 대회 진행중에 문의사항이 있을 경우는 반드시 Clar를 통해서 문의를 하셔야 합니다. 예를 들어 입력의 범위가 어디까지 들어오는지 문제에 명시 되어있지 않으면, Clar기능을 이용해서 채점자에게 문의를 하실 수 있습니다. Problem에서 General의 경우 대회에 대한 전반적인 문의를 뜻하고, 나머지의 경우 각각의 문제에 대한 문의를 할 수 있습니다. 문의 내용을 적으신다음, Submit Clarfication을 누르면 문의가 전달됩니다. 하지만 문의 사항에 대해서 항상 채점자가 답변을 해주는 것이 아니기 때문에, 이점은 유의하시기 바랍니다.&lt;br&gt;&lt;br&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/641/049/9.PNG&quot; alt=&quot;9.PNG&quot; title=&quot;9.PNG&quot; class=&quot;iePngFix&quot; style=&quot;&quot; /&gt;&lt;br&gt;&lt;br&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;끝으로 위의 알림 메시지가 뜨지 않아 채점 결과 혹은 문의 사항에 대한 결과를 확인 못할 경우, &apos;View Runs&apos;와 &apos;View Clarifications&apos;탭을 클릭해서 현재까지의 진행 상황을 알 수 있습니다. 참고로 Runs 부분 에서 New라고 되어 있는 것은 아직 채점이 되지 않은 것을 뜻합니다.&lt;br&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/641/049/10.PNG&quot; alt=&quot;10.PNG&quot; title=&quot;10.PNG&quot; class=&quot;iePngFix&quot; style=&quot;&quot; /&gt;&lt;br&gt;&lt;br&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;이상으로 PC^2에 대한 전반적인 설명을 마칩니다. 문의 사항이 있으신 분은 리플을 달아주세요~&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>plugins 사용하기</title>
      <id>http://algospot.com/zbxe/43356</id>
      <published>2007-12-25T22:44:41+09:00</published>
      <updated>2008-12-23T15:12:54+09:00</updated>
      <link rel="alternate" type="text/html" href="http://algospot.com/zbxe/43356"/>
      <link rel="replies" type="text/html" href="http://algospot.com/zbxe/43356#comment"/>
      <author>
         <name>nocut98</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;처음에 개발창을 키면&lt;span lang=&quot;EN-US&quot;&gt;, IDE&lt;/span&gt;를 쓰던 사람들은&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;물론&lt;span lang=&quot;EN-US&quot;&gt; vi &lt;/span&gt;에디터를 쓰던 사람이라고 기본 개발창이 편할지는&lt;span lang=&quot;EN-US&quot;&gt;...&lt;/span&gt;먼산&lt;span lang=&quot;EN-US&quot;&gt;) &lt;/span&gt;상당히 불편하죠&lt;/font&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;.&lt;br&gt;&lt;/span&gt;그래서 이번에는&lt;span lang=&quot;EN-US&quot;&gt; C++ &lt;/span&gt;언어를&lt;span lang=&quot;EN-US&quot;&gt; VC++&lt;/span&gt;을 통해서 쓰던 사람들을 위해서&lt;span lang=&quot;EN-US&quot;&gt; plugin &lt;/span&gt;설정 방법에 대해서 알아보려고 합니다&lt;/font&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;.&lt;br&gt;&lt;br&gt;[ &lt;/span&gt;개발 환경&lt;/font&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt; ] visual.c++2005 + visual assist X + plugins(FileEdit, TZTester 1.01, CodeProcessor)&lt;br&gt;plugins&lt;/span&gt;를 통해서 아레나 안의 문제와 예제를 컴퓨터 파일 안의&lt;span lang=&quot;EN-US&quot;&gt; *.cpp &lt;/span&gt;파일로 만들어서&lt;span lang=&quot;EN-US&quot;&gt; VC++&lt;/span&gt;로 컴파일 및 테스트 하고 다시 아레나에 올려서 컴파일 해서 제출하는 방식을 취하게 됩니다&lt;/font&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;.&lt;br&gt;&lt;br&gt;[ &lt;/span&gt;간단한 소개&lt;/font&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt; ]&lt;br&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &apos;맑은 고딕&apos;;&quot;&gt;아레나&lt;/span&gt;&lt;/strong&gt;&lt;span lang=&quot;EN-US&quot;&gt; : &lt;/span&gt;탑코딩을 하기 위해서 들어가는 자바 어플릿&lt;/font&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;br&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &apos;맑은 고딕&apos;;&quot;&gt;visual.c++2005&lt;/span&gt;&lt;/strong&gt; : &lt;/font&gt;&lt;/span&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;for(int i=0;;) for(int i=0;;) {}&amp;nbsp;&lt;/span&gt;같은 문법이&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;아레나에서는 컴파일 되고&lt;span lang=&quot;EN-US&quot;&gt; vc++6.0&lt;/span&gt;에서는&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;컴파일 안되었지만&lt;span lang=&quot;EN-US&quot;&gt;, 2005&lt;/span&gt;에서는 컴파일 됩니다&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;원활한 코딩을 위해서&lt;span lang=&quot;EN-US&quot;&gt; 6.0&lt;/span&gt;보다&lt;span lang=&quot;EN-US&quot;&gt; 2005&lt;/span&gt;를 쓰는 게 좋겠죠&lt;span lang=&quot;EN-US&quot;&gt;) &lt;/span&gt;설치 하실 때는&lt;span lang=&quot;EN-US&quot;&gt; vc++&lt;/span&gt;만 깔면&lt;span lang=&quot;EN-US&quot;&gt; 1&lt;/span&gt;기가 정도로 깔려요&lt;span lang=&quot;EN-US&quot;&gt;- (&lt;/span&gt;&lt;s&gt;쓰잘데 없는&lt;/s&gt; 다른 것들은 즐&lt;/font&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;~ -_-)&lt;br&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &apos;맑은 고딕&apos;;&quot;&gt;visual assist X&lt;/span&gt;&lt;/strong&gt; : &lt;/span&gt;갠적으로 생각하는 최고의&lt;span lang=&quot;EN-US&quot;&gt; VC++ plugin&lt;/span&gt;입니다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;쓰다보면 중독되서 비줠어시스트 없는 세상은 살기가 싫어진다는&lt;span lang=&quot;EN-US&quot;&gt;... &lt;/span&gt;ㅠ&lt;span lang=&quot;EN-US&quot;&gt;_&lt;/span&gt;ㅠ 대표적인 기능으로는 자동완성&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;문법 틀린 거 밑줄&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;선언부 찾아가기&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;파일내 함수 이동&lt;span lang=&quot;EN-US&quot;&gt;, .cpp .h &lt;/span&gt;이동 등등이 있습니다&lt;/font&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;br&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &apos;맑은 고딕&apos;;&quot;&gt;plugins(FileEdit, TZTester 1.01, CodeProcessor)&lt;/span&gt;&lt;/strong&gt; : FileEdit&lt;/font&gt;&lt;/span&gt;&lt;font face=&quot;돋움&quot;&gt;은 문제를&lt;span lang=&quot;EN-US&quot;&gt; cpp&lt;/span&gt;파일로 만들어 주고&lt;span lang=&quot;EN-US&quot;&gt;, TZTester&lt;/span&gt;는 파일 안에 예제 테스트를 가능하게 해줍니다&lt;span lang=&quot;EN-US&quot;&gt;. CodeProcessor&lt;/span&gt;는 앞에&lt;span lang=&quot;EN-US&quot;&gt; 2&lt;/span&gt;개를 합쳐줍니다&lt;/font&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;.&lt;br&gt;&lt;br&gt;[ &lt;/span&gt;설치&lt;/font&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt; ] &lt;br&gt;&lt;/span&gt;일단&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;1.jar&lt;/span&gt;파일을 저장할 폴더&lt;span lang=&quot;EN-US&quot;&gt;, 2. &lt;/span&gt;문제&lt;span lang=&quot;EN-US&quot;&gt; cpp &lt;/span&gt;파일들이 나올 폴더를 만들어 둡니다&lt;/font&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;.&lt;br&gt;&lt;/span&gt;참고로 저는&lt;span lang=&quot;EN-US&quot;&gt; 1. C:\topcoder\plugins&amp;nbsp; 2. C:\topcoder &lt;/span&gt;라는 폴더를 만들어 두었습니다&lt;/font&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;.&lt;br&gt;(&lt;/span&gt;이후에 폴더의 디렉토리가 바뀌면 안되기 때문에&lt;span lang=&quot;EN-US&quot;&gt; C&lt;/span&gt;드라이브의 폴더를 이용했습니다&lt;/font&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;)&lt;br&gt;&lt;/span&gt;이제&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;strong&gt;&lt;span style=&quot;font-family: &apos;맑은 고딕&apos;;&quot;&gt;FileEdit, TZTester 1.01, CodeProcessor&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;/span&gt;의&lt;span lang=&quot;EN-US&quot;&gt; jar&lt;/span&gt;파일을 받아서&lt;span lang=&quot;EN-US&quot;&gt; 1.jar&lt;/span&gt;파일을 저장할 폴더에 저장합시다&lt;/font&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;.&lt;br&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot; lang=&quot;EN-US&quot;&gt;jar&lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;파일&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;받는&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;곳&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot; lang=&quot;EN-US&quot;&gt; + &lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;각&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot; lang=&quot;EN-US&quot;&gt; plugin &lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;설명&lt;/span&gt;&lt;/font&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;: &lt;/font&gt;&lt;a href=&quot;http://www.topcoder.com/tc?module=Static&amp;amp;d1=applet&amp;amp;d2=plugins&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;http://www.topcoder.com/tc?module=Static&amp;amp;d1=applet&amp;amp;d2=plugins&lt;/font&gt;&lt;/a&gt;&lt;br&gt;&lt;/span&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot; lang=&quot;EN-US&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;자&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;이제&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;아레나를&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;킵니다&lt;/span&gt;&lt;/font&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;.&lt;br&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/43356/0.arena.jpg&quot; alt=&quot;0.arena.jpg&quot; title=&quot;0.arena.jpg&quot; style=&quot;&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;친숙한&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;아레나&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;창&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot; lang=&quot;EN-US&quot;&gt; , &lt;/span&gt;&lt;s&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;어둠&lt;/span&gt;&lt;/s&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;깜장의&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;포스&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot; lang=&quot;EN-US&quot;&gt;-&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot; lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font face=&quot;돋움&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;이제&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot; lang=&quot;EN-US&quot;&gt; Option – Editor &lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;창을&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;클릭합니다&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot; lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;무척&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;세심한&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;설명&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;ㅋㅋㅋ&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; font-family: &apos;Arial&apos;,&apos;sans-serif&apos;;&quot; lang=&quot;EN-US&quot;&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/43356/1.menu_editor.jpg&quot; alt=&quot;1.menu_editor.jpg&quot; title=&quot;1.menu_editor.jpg&quot; style=&quot;&quot; /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;방에 제가 좋아하는 간지 좔좔&lt;span lang=&quot;EN-US&quot;&gt; Target “82&lt;/span&gt;년생&lt;span lang=&quot;EN-US&quot;&gt;” bmerry&lt;/span&gt;가 보이는 군요&lt;span lang=&quot;EN-US&quot;&gt;. MB__&lt;/span&gt;는 맨날 있는 친구&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;대선도 끝났는데 이제 그만&lt;/font&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;-&lt;br style=&quot;&quot;&gt;&lt;br style=&quot;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;클릭 하면 아래와 같은 창이 뜹니다&lt;/font&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;.&lt;br&gt;&lt;span style=&quot;&quot;&gt;&lt;v:shape id=&quot;그림_x0020_3&quot; style=&quot;visibility: visible; width: 450.75pt; height: 240.75pt;&quot; o:spid=&quot;_x0000_i1036&quot; type=&quot;#_x0000_t75&quot;&gt;&lt;v:imagedata src=&quot;file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image005.png&quot; o:title=&quot;&quot;&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/span&gt;&lt;/span&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/43356/2.Editor_pref.jpg&quot; alt=&quot;2.Editor_pref.jpg&quot; title=&quot;2.Editor_pref.jpg&quot; style=&quot;&quot; /&gt;썰렁 하네요&lt;span lang=&quot;EN-US&quot;&gt;. Standard&lt;/span&gt;를 빼고 딴 건 지워 버리세요&lt;span lang=&quot;EN-US&quot;&gt;. Kawigiedit&lt;/span&gt;같은 거요&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;참고로 안 지워도 전혀 상관 없습니다&lt;span lang=&quot;EN-US&quot;&gt;) &lt;/span&gt;좌측 하단에&lt;span lang=&quot;EN-US&quot;&gt; Add &lt;/span&gt;버튼을 클릭합니다&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;이것도 캡춰 뜰려다 참았습니다 ㅋㅋ&lt;/font&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;)&lt;br&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/43356/3.Plugin_info.jpg&quot; alt=&quot;3.Plugin_info.jpg&quot; title=&quot;3.Plugin_info.jpg&quot; style=&quot;&quot; /&gt;&lt;/span&gt;보이는 것처럼 적어줍니다&lt;span lang=&quot;EN-US&quot;&gt;. ClassPath&lt;/span&gt;는 각자&lt;span lang=&quot;EN-US&quot;&gt; jar&lt;/span&gt;파일이 있는 위치로 설정하면 됩니다&lt;/font&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;.&lt;br style=&quot;&quot;&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/43356/4.Fileedit.jpg&quot; alt=&quot;4.Fileedit.jpg&quot; title=&quot;4.Fileedit.jpg&quot; style=&quot;&quot; /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;오&lt;span lang=&quot;EN-US&quot;&gt;- &lt;/span&gt;추가 되었네요&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;Configure&lt;/font&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;를 눌러서&lt;span lang=&quot;EN-US&quot;&gt; cpp&lt;/span&gt;파일이 나올 위치를 적어 줍니다&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;상단에&lt;span lang=&quot;EN-US&quot;&gt; C:\topcoder&lt;/span&gt;라고 되어 있는 부분)&lt;br&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/43356/5.Fileedit_conf.jpg&quot; alt=&quot;5.Fileedit_conf.jpg&quot; title=&quot;5.Fileedit_conf.jpg&quot; style=&quot;&quot; /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;코드 템플릿은 조금 있다가 건드려 보죠&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;부록&lt;span lang=&quot;EN-US&quot;&gt;A&lt;/span&gt;로 제&lt;span lang=&quot;EN-US&quot;&gt; Template&lt;/span&gt;를 적어놨습니다&lt;/font&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;) &lt;br&gt;&lt;br&gt;&lt;/span&gt;이번에는&lt;span lang=&quot;EN-US&quot;&gt; Code processor&lt;/span&gt;와&lt;span lang=&quot;EN-US&quot;&gt; TZTester&lt;/span&gt;를 한꺼번에 추가할 차례입니다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;바로 전 화면&lt;span lang=&quot;EN-US&quot;&gt;(Editor Preference)&lt;/span&gt;에서 다시&lt;span lang=&quot;EN-US&quot;&gt; Add &lt;/span&gt;버튼을 클릭합니다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;그리고 아래와 같이 입력합니다&lt;br&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/43356/6.codeprocessor_info.jpg&quot; alt=&quot;6.codeprocessor_info.jpg&quot; title=&quot;6.codeprocessor_info.jpg&quot; style=&quot;&quot; /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;!! &lt;/font&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;매우 주의할 점&lt;span lang=&quot;EN-US&quot;&gt;: ClassPath&lt;/span&gt;에는&lt;span lang=&quot;EN-US&quot;&gt; fileedit, TZTester, codeprocessor&lt;/span&gt;의&lt;span lang=&quot;EN-US&quot;&gt; 3&lt;/span&gt;개의&lt;span lang=&quot;EN-US&quot;&gt; jar&lt;/span&gt;를 모두 넣어 줍니다&lt;span lang=&quot;EN-US&quot;&gt;. Browse&lt;/span&gt;버튼을 여러 번 클릭하면 됩니다&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;가끔 &lt;s&gt;저처럼&lt;/s&gt; 어떻게 여러 개를 동시에 추가하는 지 모르는 한심한 사람들이 있습니다&lt;span lang=&quot;EN-US&quot;&gt;) OK&lt;/span&gt;버튼을 클릭하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;잘 추가되었으면 다시&lt;span lang=&quot;EN-US&quot;&gt; Configure&lt;/span&gt;버튼을 눌러서 설정을 합니다&lt;/font&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;.&lt;br&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;v:shape id=&quot;그림_x0020_11&quot; style=&quot;visibility: visible; width: 450.75pt; height: 127.5pt;&quot; o:spid=&quot;_x0000_i1031&quot; type=&quot;#_x0000_t75&quot;&gt;&lt;v:imagedata src=&quot;file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image015.png&quot; o:title=&quot;&quot;&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/43356/7.codeprocessor_conf.jpg&quot; alt=&quot;7.codeprocessor_conf.jpg&quot; title=&quot;7.codeprocessor_conf.jpg&quot; style=&quot;&quot; /&gt;Editor&lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;와&lt;span lang=&quot;EN-US&quot;&gt; Processor class&lt;/span&gt;의 시작 위치를 적어줍니다&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;그냥 똑같이 적어주시면 됩니다&lt;span lang=&quot;EN-US&quot;&gt;. Verify &lt;/span&gt;버튼 한 번 눌러 주시구요&lt;span lang=&quot;EN-US&quot;&gt;. Save&lt;/span&gt;나&lt;span lang=&quot;EN-US&quot;&gt; Close &lt;/span&gt;눌렀을 때 에러 메시지 뜨면&lt;span lang=&quot;EN-US&quot;&gt;, ClassPath&lt;/span&gt;에서 포함을 안 시켜줬을 확률이 높아요&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;아래와 같은 화면이 보이면 됩니다&lt;/font&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;.&lt;br&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;v:shape id=&quot;그림_x0020_12&quot; style=&quot;visibility: visible; width: 450.75pt; height: 240.75pt;&quot; o:spid=&quot;_x0000_i1030&quot; type=&quot;#_x0000_t75&quot;&gt;&lt;v:imagedata src=&quot;file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image017.png&quot; o:title=&quot;&quot;&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/43356/8.setting_end.jpg&quot; alt=&quot;8.setting_end.jpg&quot; title=&quot;8.setting_end.jpg&quot; style=&quot;&quot; /&gt;와&lt;span lang=&quot;EN-US&quot;&gt;- &lt;/span&gt;드디어 기나긴 여정의 중간 까지는 왔습니다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;Save&lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;닫은 담에 문제를 하나 열어보아요&lt;span lang=&quot;EN-US&quot;&gt;- ( SRM 146 Div 2 – 1000 &lt;/span&gt;문제&lt;span lang=&quot;EN-US&quot;&gt; )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;평소랑 다릅니다&lt;/font&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;.&lt;br&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;v:shape id=&quot;그림_x0020_13&quot; style=&quot;visibility: visible; width: 450.75pt; height: 376.5pt;&quot; o:spid=&quot;_x0000_i1029&quot; type=&quot;#_x0000_t75&quot;&gt;&lt;v:imagedata src=&quot;file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image019.png&quot; o:title=&quot;&quot;&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/43356/8-2.arena.jpg&quot; alt=&quot;8-2.arena.jpg&quot; title=&quot;8-2.arena.jpg&quot; style=&quot;&quot; /&gt;코딩&lt;span lang=&quot;EN-US&quot;&gt; Area&lt;/span&gt;에 코딩을 할 수가 없네요 ㅡ&lt;span lang=&quot;EN-US&quot;&gt;.&lt;/span&gt;ㅜ&lt;span lang=&quot;EN-US&quot;&gt;; &lt;/span&gt;당황하지 말고&lt;span lang=&quot;EN-US&quot;&gt;, C:\topcoder&lt;/span&gt;로 갑니다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;더블 클릭해서 파일을 열면&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;컴파일이 안됩니다&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;이거 방법 아시는 분 있으면 알려주세요 굽신굽신&lt;span lang=&quot;EN-US&quot;&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;그래서 그냥 빈 프로젝트를 하나 만들어서&lt;span lang=&quot;EN-US&quot;&gt; cpp &lt;/span&gt;파일을 추가합니다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;저 같은 경우는&lt;span lang=&quot;EN-US&quot;&gt; topcoder &lt;/span&gt;디렉토리에 빈 프로젝트 만들어 놓고 필요한&lt;span lang=&quot;EN-US&quot;&gt; cpp&lt;/span&gt;파일만 추가해서 쓰고 있습니다&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;좌측&lt;span lang=&quot;EN-US&quot;&gt; solution &lt;/span&gt;창에서 파일을&lt;span lang=&quot;EN-US&quot;&gt; add&lt;/span&gt;합니다&lt;/font&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;)&lt;br&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;v:shape id=&quot;그림_x0020_14&quot; style=&quot;visibility: visible; width: 450.75pt; height: 5in;&quot; o:spid=&quot;_x0000_i1028&quot; type=&quot;#_x0000_t75&quot;&gt;&lt;v:imagedata src=&quot;file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image021.png&quot; o:title=&quot;&quot;&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/43356/9.vc++.jpg&quot; alt=&quot;9.vc++.jpg&quot; title=&quot;9.vc++.jpg&quot; style=&quot;&quot; /&gt;Visual assist&lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;는 그냥 까시면 됩니다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;가격은&lt;span lang=&quot;EN-US&quot;&gt; 15&lt;/span&gt;만원 정도 합니다&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;돈 없는 &lt;s&gt;저 같은&lt;/s&gt; 분들은 인터넷을 잘 뒤져봅시다 참고로 전&lt;span lang=&quot;EN-US&quot;&gt; visual assist X 10.4.1619 &lt;/span&gt;버전을 사용했습니다&lt;span lang=&quot;EN-US&quot;&gt;;;;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;코딩하고 컴파일 하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;실행 하면 아래와 같이 테스트 까지 됩니다&lt;/font&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;.&lt;br&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;v:shape id=&quot;그림_x0020_15&quot; style=&quot;visibility: visible; width: 450.75pt; height: 123pt;&quot; o:spid=&quot;_x0000_i1027&quot; type=&quot;#_x0000_t75&quot;&gt;&lt;v:imagedata src=&quot;file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image023.png&quot; o:title=&quot;&quot;&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/43356/10.vc++_console.jpg&quot; alt=&quot;10.vc++_console.jpg&quot; title=&quot;10.vc++_console.jpg&quot; style=&quot;&quot; /&gt;잘 되었네요&lt;span lang=&quot;EN-US&quot;&gt; (&lt;/span&gt;당연히 이미 짜놨던 코드니까 ㅋㅋㅋ&lt;span lang=&quot;EN-US&quot;&gt;) &lt;/span&gt;테스트까지 한 번에 다 해주다니&lt;span lang=&quot;EN-US&quot;&gt;- &lt;/span&gt;ㅠ&lt;span lang=&quot;EN-US&quot;&gt;_&lt;/span&gt;ㅠ&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;게다가 이렇게 되면&lt;span lang=&quot;EN-US&quot;&gt; VC++&lt;/span&gt;의 디버깅을 이용할 수 있기 때문에 나중에 좀 코드가 긴 문제에서 디버깅 할 때 편리하게 사용할 수 있겠네요&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;&quot;&gt;&amp;nbsp; &lt;/span&gt;^^&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;v:shape id=&quot;그림_x0020_18&quot; style=&quot;visibility: visible; width: 450.75pt; height: 376.5pt;&quot; o:spid=&quot;_x0000_i1026&quot; type=&quot;#_x0000_t75&quot;&gt;&lt;v:imagedata src=&quot;file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image025.png&quot; o:title=&quot;&quot;&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;요기서 컴파일 하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;서밋 합니다&lt;span lang=&quot;EN-US&quot;&gt;(IDE&lt;/span&gt;에서 컴파일하고 서밋까지 되면 얼마나 좋을까요 ㅋ&lt;/font&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;)&lt;br&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;v:shape id=&quot;그림_x0020_19&quot; style=&quot;visibility: visible; width: 245.25pt; height: 91.5pt;&quot; o:spid=&quot;_x0000_i1025&quot; type=&quot;#_x0000_t75&quot;&gt;&lt;v:imagedata src=&quot;file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image027.png&quot; o:title=&quot;&quot;&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/43356/11.submit.jpg&quot; alt=&quot;11.submit.jpg&quot; title=&quot;11.submit.jpg&quot; style=&quot;&quot; /&gt;잘 되었습니다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이것으로 드디어 &lt;s&gt;캡춰때문에&lt;/s&gt; 길었던&lt;span lang=&quot;EN-US&quot;&gt; plugin &lt;/span&gt;설정이 끝났습니다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font face=&quot;돋움&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;개인적으로는&lt;span lang=&quot;EN-US&quot;&gt; VC++ + Visual assist &lt;/span&gt;조합을 애용하다가 카위기 에딧으로는 뭔가 불편해서 장애인 느낌이 계속 났었는데 &lt;span lang=&quot;EN-US&quot;&gt;VC++&lt;/span&gt;에서 코딩 할 수 있어서 너무 좋습니다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font face=&quot;돋움&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;단점&lt;span lang=&quot;EN-US&quot;&gt;: &lt;/span&gt;한번 저장했다가 열면&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;저장되었던 코드를 가져와서 테스트 코드가 없어지네요&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;다른 설명&lt;span lang=&quot;EN-US&quot;&gt;: &lt;a href=&quot;http://www.topcoder.com/wiki/display/tc/How+to+install+The+Arena+plug-ins&quot;&gt;http://www.topcoder.com/wiki/display/tc/How+to+install+The+Arena+plug-ins&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font face=&quot;돋움&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font face=&quot;돋움&quot;&gt;덧1 : 혹시 &quot;cannot instantiate tangentz.EntryPoint, java.lang.ClassNotFoundException: tangentz.EntryPoint&quot; 요런&amp;nbsp; 메시지가 보이면 다시 다운 받으면 된다고 합니다.&lt;br&gt;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font face=&quot;돋움&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;[ &lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;부록&lt;span lang=&quot;EN-US&quot;&gt; A ] : Editor Code Template&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;별 건 없고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;처음에 문제 설명이 같이 있는데&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;문제 설명은 빼버리거나&lt;span lang=&quot;EN-US&quot;&gt; /* */ &lt;/span&gt;주석으로 잘 감싸주시면 될 껍니다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font face=&quot;돋움&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;$BEGINCUT$&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;/*&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;$PROBLEMDESC$&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;$ENDCUT$&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#line $NEXTLINENUMBER$ &quot;$FILENAME$&quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font face=&quot;돋움&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#include &amp;lt;vector&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#include &amp;lt;list&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#include &amp;lt;map&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#include &amp;lt;set&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#include &amp;lt;deque&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#include &amp;lt;stack&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#include &amp;lt;bitset&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#include &amp;lt;algorithm&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#include &amp;lt;functional&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#include &amp;lt;numeric&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#include &amp;lt;utility&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#include &amp;lt;sstream&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#include &amp;lt;iostream&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#include &amp;lt;iomanip&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#include &amp;lt;cstdio&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#include &amp;lt;cmath&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#include &amp;lt;cstdlib&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#include &amp;lt;ctime&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;using namespace std;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font face=&quot;돋움&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#define pb push_back&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#define mp make_pair&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#define sz(v) ((int)(v).size())&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#define f(i,a,b) for(int i=(a);i&amp;lt;(b);++i)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#define r(i,n) f(i,0,n)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#define fe(i,a,b) for(int i=(a);i&amp;lt;=(b);++i)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#define re(i,n) fe(i,0,n)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#define fsz(i,a,v) f(i,a,sz(v))&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#define rsz(i,v) r(i,sz(v))&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#define all(v) v.begin(),v.end()&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#define set(x,with) memset(x,with,sizeof(x))&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;string itoa(int i) { stringstream ss; ss&amp;lt;&amp;lt;i; return ss.str(); }&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#define same(a,b) (fabs((a)-(b))&amp;lt;0.0000001)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#define even(a) ((a)%2==0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;#define odd(a) ((a)%2==1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font face=&quot;돋움&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;class $CLASSNAME$ { &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;public: &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;$RC$ $METHODNAME$($METHODPARMS$) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;$RC$ rr;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;return rr;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;} &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;$TESTCODE$ &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;}; &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font face=&quot;돋움&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// BEGIN CUT HERE &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;int main()&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;$CLASSNAME$ ___test; &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;___test.run_test(-1); &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;} &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;font face=&quot;돋움&quot;&gt;&lt;span style=&quot;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// END CUT HERE &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 0pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot; lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font face=&quot;돋움&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>TopCoder Arena 단축아이콘 만들기</title>
      <id>http://algospot.com/zbxe/6134</id>
      <published>2007-11-27T14:28:08+09:00</published>
      <updated>2007-12-06T10:22:45+09:00</updated>
      <link rel="alternate" type="text/html" href="http://algospot.com/zbxe/6134"/>
      <link rel="replies" type="text/html" href="http://algospot.com/zbxe/6134#comment"/>
      <author>
         <name>최치선</name>
                  <uri>http://www.redfeel.net</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;SRM을 할 때 매번 topcoder사이트에 접속해서 누르는게 불편하셨죠?&lt;br&gt;&lt;br&gt;간단하게 단축아이콘을 만드는 법을 여러분께 소개합니다.&lt;br&gt;&lt;br&gt;1. 시작 - 제어판 - Java 를 누르면 다음과 같은 화면이 뜹니다.&lt;br&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/6134/a.png&quot; alt=&quot;a.png&quot; title=&quot;a.png&quot; class=&quot;iePngFix&quot; style=&quot;&quot; /&gt;&lt;br&gt;&lt;br&gt;2. &apos;임시 인터넷 파일&apos; 항목의 &apos;보기&apos;를 누르면 다음과 같은 창이 뜹니다.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (command line에서 javaws -viewer를 입력해도 무방합니다.)&lt;br&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/6134/b.png&quot; alt=&quot;b.png&quot; title=&quot;b.png&quot; class=&quot;iePngFix&quot; style=&quot;&quot; /&gt;&lt;br&gt;3. &apos;Competition Arena&apos;를 선택한 후 도구모음 아이콘의 &apos;단축키 설치&apos;를 선택하거나&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 우클릭 후 &apos;단축키 설치&apos; 를 선택합니다.&lt;br&gt;&lt;br&gt;4. 바탕화면에 보면 단축아이콘이 생성된 것을 확인하실수 있습니다.&lt;br&gt;&lt;br&gt;그럼 다들 SRM에서 보아요 ~&lt;br&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>탑코더 SRM 튜토리얼</title>
      <id>http://algospot.com/zbxe/6006</id>
      <published>2007-11-22T16:27:02+09:00</published>
      <updated>2007-12-26T11:26:41+09:00</updated>
      <link rel="alternate" type="text/html" href="http://algospot.com/zbxe/6006"/>
      <link rel="replies" type="text/html" href="http://algospot.com/zbxe/6006#comment"/>
      <author>
         <name>legend12</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;STRONG&gt;1. Registration&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; SRM (Single Round Match) 에 참가하기 위해서는 대회가 시작하기 전 Competition Arena 에 접속하여 참가등록을 하여야 한다. 참가등록시간은 대회시작 3시간전부터 5분전까지 가능하며, 단일 SRM 의 최대인원 제한 1500명이 있으므로, 시간과 총인원에 유의하여 등록을 마쳐야 한다.&lt;BR&gt;&amp;nbsp; Competition Arena 에 접속하기 위해서는 탑코더 Handle 이 필요한데 이는 웹사이트(&lt;A href=&quot;http://www.topcoder.com/tc&quot;&gt;http://www.topcoder.com/tc&lt;/A&gt;)에서 가입이 가능하며, 가입 후에는 화면 왼쪽 상단에 있는 &quot;O(n)&quot; 아이콘을 클릭하면 설치 및 접속이 가능하다. 한번 설치한 이후에는 시작프로그램에 등록하여 접속하는 방법도 가능하다.&lt;BR&gt;&lt;BR&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/6006/tc.JPG&quot; alt=&quot;tc.JPG&quot; title=&quot;tc.JPG&quot; style=&quot;&quot; /&gt;&lt;BR&gt;* 파란색 박스로 표시되어 있는 부분이 Competition Arena 접속하는 아이콘&lt;BR&gt;&lt;BR&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/6006/arena_main.PNG&quot; alt=&quot;arena_main.PNG&quot; title=&quot;arena_main.PNG&quot; class=&quot;iePngFix&quot; style=&quot;&quot; /&gt;&lt;BR&gt;* 아레나에 접속하여 SRM 에 등록하는 위치&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;2. Divisions&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp; SRM에 등록을 하게 되면 개인의 성적에 따라서&amp;nbsp;2개의 Divisions 한쪽에&amp;nbsp;배정이 된다. Division 1 과 2 가 있는데, Division 1 이 상위 Division 이다. 개인은 매 SRM 성적에 따라서 Rating 이라는 자신의 현재 성적을 가늠할 수 있는 수치가 바뀌게 되는데, Rating 이 1200 미만이거나 처음 참가하는 사람들은 Division 2 에서 그 외의 사람들은 Division 1 에서 SRM 을 치루게 된다. Rating 에 대한 사항은 뒤에서 다시 자세하게 언급하도록 하겠다.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;3. Competition&lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp; SRM 은 75분의 Coding Phase 와 5분의 Intermission, 15분의 Challenge Phase 그리고 그 이후의 System Test Phase 로 이루어진다. 일반적으로&amp;nbsp;대회가 시작하는 시간으로부터 2시간 정도면 최종결과를 볼 수 있다.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;1) Coding Phase&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp; 75분간 주어지는 Easy, Medium, Hard 3문제를 풀어서 제출할 수 있는 시간이다. 각각의 문제는 250, 500, 1000 점을 기본으로 해당 SRM 의 난이도에 따라서 다소 점수의 변동이 있을 수 있다. 문제를 여는 시간으로부터 점수가 점점 감소하며, submit 을 한 시점의 점수가 반영된다. Coding Phase 내에는 한번 제출한 문제를 다시 제출할 수 있는데, 이때는 시간에 따른 감점에 10%의 추가 감점이 주어진다. 모든 문제에 대해서는 총점의 30% 에 해당하는 기본점수가 주어지기 때문에 늦게 제출하거나 여러번에 걸쳐 재제출하더라도 최소한의 점수는 보장된다.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;2) Intermission&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp; Coding Phase 와 Challenge Phase 사이에 주어지는 5분의 휴식시간. 사실 휴식시간이라기 보다는 자신의 소스를 다시한번 검토하고 Challenge Phase 를 대비하기 위한 case 생성시간으로 사용된다고 보는 것이 더 좋을 것이다.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;3) Challenge Phase&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp; 방에 있는 다른 사람들이 제출한 코드를 보고 반례 데이터를 입력하여 틀렸음을 &lt;STRONG&gt;&lt;FONT color=#ee2222&gt;15분&lt;/FONT&gt;&lt;/STRONG&gt;간&amp;nbsp;증명하는 시간이다. 내가 만약 남의 반례 데이터를&amp;nbsp;넣어 틀린것을 찾아내는데 성공했다면 50점을 추가로 받으며, 실패했을 경우에는 25점을 감점으로 받는다. 이런 반례 데이터를 넣는 것을 Challenge 라고 한다. 이미 다른 사람이 반례를 찾는데 성공한 것에 대해서는 더이상 시도할 수 없으며, 자신의 점수가 음수일 때 또한 더이상 시도할 수 없다.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;4) System Test Phase&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp; 제출된 해답들 중에서 Challenge Phase 에서 반례가 발견되지 않고 넘어온 모든 솔루션에 대해서 검증하는 시간이다. 이 채점은 기본적으로 출제자가 준비한 케이스들과 모든 방에서 Challenge 에 성공한 케이스들이 포함되어 채점을 한다. 이걸 통과하지 못하면 그 문제는 0점 처리되며, 통과한 문제들에 대해서만 점수가 부과된다.&lt;BR&gt;&lt;BR&gt;&amp;nbsp; 이렇게 모든 대회가 끝나고 나면 System Test 까지 Pass 한 해답들에 대한 점수와 Challange Phase 에서 획득한(또는 잃은) 점수가 합산되어 최종 순위가 결정된다.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;4. Coding Rules&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp; 탑코더의 경우에는 ICPC 와는 다르게 전체 프로그램을 만들어 제출하는 것이 아니라, 주어지는 클래스의 함수 하나를 만들어서 제출하면 된다. 추가적인 다른&amp;nbsp;함수에 대한 제한은 없다.&lt;BR&gt;&amp;nbsp;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/6006/prob.PNG&quot; alt=&quot;prob.PNG&quot; title=&quot;prob.PNG&quot; class=&quot;iePngFix&quot; style=&quot;&quot; /&gt;&lt;BR&gt;위의 문제에서 보면 TristipteBacteria 라는 Class 안에 int 를 return 으로 하고 String[] 를 인자로 하는 howMany 라는 함수가 필수로 포함되어 있어야 한다는 것을 알 수 있다. ICPC 에서 하듯이&amp;nbsp;main 함수를 만들어서 넣고 Compile 을 할 경우 Error 가 발생하니 주의가 필요하다.&lt;BR&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/6006/arena.PNG&quot; alt=&quot;arena.PNG&quot; title=&quot;arena.PNG&quot; class=&quot;iePngFix&quot; style=&quot;&quot; /&gt;&lt;BR&gt;이제 코딩한 내용을 Coding Area 에 놓고 하단에 위치한 Compile 버튼을 누르면 컴파일을 할 수 있다. 팝업창을 통해 Error 위치 또는 컴파일 완료라는 메시지 창이 뜨게 되고, Test 버튼을 눌러서 프로그램을 검증해 볼 수 있다. 기본적으로 예제 데이터들은 입력되어 있으며, 직접 데이터를 입력하여 test 해 볼 수 있다. 이제 틀린것이 없다고 생각되면 가장 우측에 위치한 Submit 버튼을 눌러서 솔루션을 제출할 수 있다. 솔루션이 제출될때 UCR 에 관련된 경고창이 뜰 수 있으며, 제출이 확인되면 문제에 대한 현재 점수가 팝업창을 통해서 나타난다.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;* UCR (Unused Code Rules)&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp; 제출된 코드 중 실제로 동작하지 않는 Code 가 30% 이상 포함되어 있을 경우를 말하며, 이 경우에는 획득한 점수의 20% 만이 부여된다. System test 후에 걸러지므로 실제 스탠딩에서는 확인할 수 없다. 좀 더 세부적인 사항은 링크(&lt;A href=&quot;http://www.topcoder.com/tc?module=Static&amp;amp;d1=help&amp;amp;d2=ratedEvent#extracoderule&quot;&gt;http://www.topcoder.com/tc?module=Static&amp;amp;d1=help&amp;amp;d2=ratedEvent#extracoderule&lt;/A&gt;)를 참조.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;5. Advanced Skills&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp; 많은 참가자들은 문제를 푸는데 소용되는 시간을 좀 더 줄이고, 좀 더 자신에게 편리한 방향으로 SRM 에 참가하기 위하여 나름의 노하우를 쌓아서 참가하고는 한다. 이런 것들을 반영하는 것이 Template code 와 Arena plug-in 이 되겠다.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;1) Templates&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp; typedef 라 define 을 통해서 자신이 자주사용하는 명령어들을 짧게 재정의 하여 사용하거나, 문제에서 필요할 것이라고 예측되는 함수들을 미리 구현하여 놓고, 대회가 시작하면 붙여넣어 사용하는 코드들을 말한다. 이런 코드들은 전체적인 코딩시간을 줄여줄 뿐만 아니라 미리 검증을 통해 구현하기 때문에 디버그시에 디버그의 범위를 제한시켜 준다는 장점을 가진다. 하지만 문제에서 사용되지 않는 코드들을 붙여넣을 경우 UCR 에 걸릴 수 있기 때문에 조심해서 사용해야 한다.&lt;BR&gt;[code c++]&lt;BR&gt;#define pb&amp;nbsp;push_back&lt;BR&gt;#define FOR(i, a, b) for(int i = (a); i &amp;lt; (b); ++i)&lt;BR&gt;typedef long long ll;&lt;BR&gt;typedef vector&amp;lt;int&amp;gt; VI;&lt;BR&gt;int ccw(point pa, point pb, point pc)&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (pa.x - pb.x) * (pb.y - pc.y) - (pb.x - pc.x) * (pa.y - pb.y); &lt;BR&gt;} &lt;BR&gt;[/code]&lt;BR&gt;* 많이 사용되는 template 의 형태&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;2) Plug-ins&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp; &lt;A href=&quot;http://algospot.com/zbxe/openlecture/43356&quot;&gt;http://algospot.com/zbxe/openlecture/43356&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;6. Rating &amp;amp;&amp;nbsp;Volatility&lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp; 레이팅에 따라서 핸들의 색이 달라지게 된다.&amp;nbsp;&lt;BR&gt;&amp;nbsp; &lt;STRONG&gt;&lt;FONT color=#999999&gt;Gray : 0 - 899&lt;/FONT&gt;&lt;/STRONG&gt; &amp;nbsp;/&amp;nbsp; &lt;FONT color=#22aa22&gt;&lt;STRONG&gt;Green : 900 - 1199&lt;/STRONG&gt;&lt;/FONT&gt;&amp;nbsp; /&amp;nbsp; &lt;FONT color=#2222ee&gt;&lt;STRONG&gt;Blue : 1200 - 1499&lt;/STRONG&gt;&lt;/FONT&gt;&amp;nbsp; /&amp;nbsp; &lt;FONT color=#eeee44&gt;&lt;STRONG&gt;Yellow : 1500 - 2199&lt;/STRONG&gt;&lt;/FONT&gt;&amp;nbsp; /&amp;nbsp; &lt;FONT color=#ee2222&gt;&lt;STRONG&gt;Red : 2200+&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp; 이 외에 레이팅이 3000+ 인 경우에는 타겟이라고 불리는 괴물 집단이 존재한다. 이 경우 핸들의 색이 변하지는 않으나 Arena 에서 핸들 앞에 나타나는 원의 형태가 다르다.&lt;BR&gt;&amp;nbsp;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/6006/target.PNG&quot; alt=&quot;target.PNG&quot; title=&quot;target.PNG&quot; class=&quot;iePngFix&quot; style=&quot;&quot; /&gt;&lt;BR&gt;&amp;nbsp;* 잘 알려져 있는 Target 둘이다.&lt;BR&gt;&amp;nbsp; 레이팅은 매 SRM 이 끝나면 변하게 되는데 이는 영향이 받는 변수가 많으니 자세한 설명은 생략한다. 꼭 계산을 해보고 싶다면 &lt;A href=&quot;http://www.topcoder.com/tc?module=Static&amp;amp;d1=help&amp;amp;d2=ratings&quot;&gt;http://www.topcoder.com/tc?module=Static&amp;amp;d1=help&amp;amp;d2=ratings&lt;/A&gt;&amp;nbsp;이 곳을 참고하면 된다.&lt;BR&gt;&amp;nbsp; Volatility 는 자신의 변동성지수를 나타낸다. 수치가 클수록 레이팅의 변동폭이 크며, 작을수록 변동폭이 작다.&lt;BR&gt;&lt;STRONG&gt;&lt;BR&gt;7. Money Match&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp; SRM 중에 일부는 스폰서를 통해서 상금이 걸린 경우가 있다. 이를 Money Match 라고 하는데 일반적으로 총 상금은 $5,000 이며, Division 1 에서는 방 1~3등이 Division 2 에서는 방 1~2등이 상금을 받는다. 분배방식은 총 상금의 70% 가 Division 1 에 30% 가 Division 2 에 할당되며, 이 할당랼들은 방의 갯수에 따라 동일하게&amp;nbsp;방별로 상금이 나뉜다. Division 1 의 방 1등은&amp;nbsp;50% 를&amp;nbsp;2등은 30%, 3등은 20% 를 받으며, Division 2 의 방 1등은 할당량의 60%, 2등은 40% 를 받게 된다.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;8. Affidavit&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp; 상금을 받기 위해서는 공증작업을 거쳐야 하는데, 이것은 공증서류를 준비하여 미국 대사관에 가면 수수료를 내고 받을 수 있다. 공증을 받기위해서는 Topcoder 가 미국기업임을 증명할 수 있어야 하므로 웹사이트에 있는 미국내&amp;nbsp;주소를 꼭 알아가도록 하자. 대사관에서 공증을 받은 후에는 이것을 탑코더에 국제우편을 보내면 끝.&lt;BR&gt;&lt;BR&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>TopCoder에서 상금 받기 - W-8BEN 작성하기</title>
      <id>http://algospot.com/zbxe/1822</id>
      <published>2007-10-09T21:45:40+09:00</published>
      <updated>2008-07-14T10:56:15+09:00</updated>
      <link rel="alternate" type="text/html" href="http://algospot.com/zbxe/1822"/>
      <link rel="replies" type="text/html" href="http://algospot.com/zbxe/1822#comment"/>
      <author>
         <name>Toivoa</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;상금을 받기 위해서는 Affidavit을 출력해서 미 대사관에서 공증받은 후에 &lt;br&gt;&lt;br&gt;W-8BEN 문서를 작성해서 우편으로 공증받은 Affidavit 문서와 함께 TopCoder로 보내면 됩니다.&lt;br&gt;&lt;br&gt;W-8BEN 작성에 대해서는 첨부한 PDF 파일을 참조하시면 됩니다.&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>Ternary Search 튜토리얼</title>
      <id>http://algospot.com/zbxe/618</id>
      <published>2007-09-26T02:58:39+09:00</published>
      <updated>2008-03-30T04:12:18+09:00</updated>
      <link rel="alternate" type="text/html" href="http://algospot.com/zbxe/618"/>
      <link rel="replies" type="text/html" href="http://algospot.com/zbxe/618#comment"/>
      <author>
         <name>JM</name>
                  <uri>http://whinii.com/</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;옛날에 후배들을 위해 작성한 글인 관계로 경어체가 아니네요. 양해 부탁드립니다~ ^^&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;TernarySearch (터너리 서치라고 읽는다) 는, BinarySearch 와 비슷한 검색 알고리즘이다. 사실 BinarySearch 는 
정렬된 상태의, 임의 접근이 가능한 수열에서 원소를 찾아내기 위한 알고리즘으로 많이 일컬어지기 때문에, 정확하게는 BisectionMethod 
와 비슷한 검색 기법이라고 할 수 있다. &lt;br&gt;&lt;br&gt;&lt;b&gt;기본 개념&lt;/b&gt; &lt;br&gt;TernarySearch 는 어떤 연속적인 unimodal function `f(x)` 의 최대값, 혹은 최소값 
(`최적해` 라고 한다) 을 찾는 것을 목표로 한다. 여기서는 최대값을 갖는 함수의 최대값을 찾는 것만을 대상으로 해 이야기하자. 만약 최소값을 
갖는 함수의 최소값을 찾고 싶다면, 정확히 반대로 하면 된다. &lt;br&gt;&lt;br&gt;unimodal 함수란 한 개의 지역 극대점만을 갖는 함수를 의미한다. 쉽게 이해하자면, 극대점에 이르기까지는 단조 증가하고, 그 후부터는 단조 
감소하는 함수를 의미한다. 예를 들면 다음과 같이 생긴 함수를 들 수 있다. &lt;br&gt;&lt;br&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/618/unimodal_function.png&quot; alt=&quot;unimodal_function.png&quot; title=&quot;unimodal_function.png&quot; class=&quot;iePngFix&quot; style=&quot;&quot; /&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;단, 다음과 같은 제약이 있다. &lt;br&gt;* 수직선이나 수평선은 있을 수 없다: 수직선은 함수의 정의에 어긋나므로 안 되고, 수평선은 단조 
증가/단조 감소라는 조건에 어긋나므로 안 된다. &lt;br&gt;&lt;br&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/618/not_unimodal_horizontal_line.png&quot; alt=&quot;not_unimodal_horizontal_line.png&quot; title=&quot;not_unimodal_horizontal_line.png&quot; class=&quot;iePngFix&quot; style=&quot;&quot; /&gt;&lt;br&gt;&lt;br&gt;* 지역 극대는 하나만 있어야 한다. 이런 지역 극대를 피크(peak) 라고 부르는데, peak 는 양쪽 옆의 점이 모두 자기 자신보다 작아야 
한다. &lt;br&gt;&lt;br&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/618/not_unimodal_two_peaks.png&quot; alt=&quot;not_unimodal_two_peaks.png&quot; title=&quot;not_unimodal_two_peaks.png&quot; class=&quot;iePngFix&quot; style=&quot;&quot; /&gt;&lt;br&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;(주: 위 그림에 오타가 있습니다: 지역 극소가 아니라 극대라고 해야 하지요 ^^;;;)&lt;/span&gt;&lt;br&gt;&lt;br&gt;이런 함수의 최적해를 구하는 것은 LocalSearch 로도 가능할 거라고 생각하겠지만, TernarySearch 는 전체 탐색 범위가 한번에 
2/3 으로 줄어들기 때문에 로컬 서치보다 훨씬 빨리 수렴하고, 함수가 수렴했음을 판단하는 것도 간단한 편이다. &lt;br&gt;&lt;br&gt;&lt;b&gt;접근 
방법&lt;/b&gt; &lt;br&gt;TernarySearch 는 답의 범위 안에서 해당 함수가 unimodal 임을 루프불변조건으로 유지하며, 종료 조건이 
만족될 때까지 루프를 반복하며 답의 범위 `[left, right]` 를 줄여간다. 루프의 각 iteration 에서, 두 개의 값 `a = 
(left*2 + right) / 3` 과 `b = (left + right*2) / 3` 에서의 함수 값을 샘플링한다. &lt;br&gt;&lt;br&gt;&lt;img src=&quot;http://algospot.com/zbxe/files/attach/images/116/618/ternary_iteration.png&quot; alt=&quot;ternary_iteration.png&quot; title=&quot;ternary_iteration.png&quot; class=&quot;iePngFix&quot; style=&quot;&quot; /&gt;&lt;br&gt;&lt;br&gt;이때, f(a) 와 f(b) 에 대한 값을 비교하자.&lt;br&gt;&lt;br&gt;a. 만약 f(a) &amp;lt; f(b) 라면 (그림과 같이)&lt;br&gt;* 주어진 함수는 unimodal 이므로 f(a) &amp;lt; f(b) 인 경우, [left, a] 구간 안에 f(b) 보다 큰 값이 없음은 자명하다.&lt;br&gt;* 그러므로, left = a 를 도입하여 구간을 2/3 으로 줄일 수 있다.&lt;br&gt;b. 만약 f(a) &amp;gt; f(b) 라면&lt;br&gt;* 주어진 함수는 unimodal 이므로 f(a) &amp;gt; f(b) 인 경우, [b, right] 구간 안에 f(a) 보다 큰 값이 없음은 자명하다.&lt;br&gt;* 그러므로, right = b 를 도입하여 구간을 2/3 으로 줄일 수 있다.&lt;br&gt;&lt;br&gt;[left,right] 범위가 충분히 작아질 때까지 이를 반복하여 답을 찾는다. &lt;br&gt;&lt;b&gt;&lt;br&gt;샘플 코드&lt;/b&gt; &lt;br&gt;&lt;ol&gt;&lt;li class=&quot;li1&quot;&gt;&lt;span class=&quot;de1&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// [min,max] 구간에서 f(x) 가 최대인 x를 
찾는다.&lt;/span&gt;&lt;/span&gt; 
&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;span class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/span&gt; 
&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;span class=&quot;de1&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;double&lt;/span&gt; ternary&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;double&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;min&lt;/span&gt;, 
&lt;span class=&quot;kw4&quot;&gt;double&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;max&lt;/span&gt;, Function&amp;amp; f&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;/span&gt; 
&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;span class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt;&lt;/span&gt; 
&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;span class=&quot;de1&quot;&gt;&amp;nbsp; &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;max&lt;/span&gt; - &lt;span class=&quot;kw3&quot;&gt;min&lt;/span&gt; &amp;gt; 
&lt;span class=&quot;kw3&quot;&gt;max&lt;/span&gt; * 1e&lt;span class=&quot;nu0&quot;&gt;-9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;/span&gt; 
&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;span class=&quot;de1&quot;&gt;&amp;nbsp; &lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt;&lt;/span&gt; 
&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;span class=&quot;de1&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;span class=&quot;kw4&quot;&gt;double&lt;/span&gt; a = &lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;min&lt;/span&gt;*&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; + &lt;span class=&quot;kw3&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;3.0&lt;/span&gt;;&lt;/span&gt; 
&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;span class=&quot;de1&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;span class=&quot;kw4&quot;&gt;double&lt;/span&gt; b = &lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;min&lt;/span&gt; + &lt;span class=&quot;kw3&quot;&gt;max&lt;/span&gt;*&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;3.0&lt;/span&gt;;&lt;/span&gt; 
&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;span class=&quot;de1&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;f&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt; &amp;lt; f&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;b&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;/span&gt; 
&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;span class=&quot;de1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;kw3&quot;&gt;min&lt;/span&gt; = a;&lt;/span&gt; 
&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;span class=&quot;de1&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;&lt;/span&gt; 
&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;span class=&quot;de1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;kw3&quot;&gt;max&lt;/span&gt; = b;&lt;/span&gt; 
&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;span class=&quot;de1&quot;&gt;&amp;nbsp; &lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;/span&gt; 
&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;span class=&quot;de1&quot;&gt;&amp;nbsp; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;min&lt;/span&gt;+&lt;span class=&quot;kw3&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;*.&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;;&lt;/span&gt; 
&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;span class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br&gt;&lt;b&gt;유의할 점&lt;/b&gt; &lt;br&gt;위 예제 코드에서, 종료 조건이 max - min &amp;gt; 1e-9 가 아니라 max - min &amp;gt; 
max * 1e-9 인 것을 유의해서 보라. 예를 들어 `max = 1e50, min = 1e40` 이라고 하자. 종료조건을 max - 
min &amp;gt; 1e-9 로 하면 어떻게 될까? 숫자가 워낙 크기 때문에 실수연산의 오차로 아무리 반복해도 1e-9 이하로 차이가 줄어들지 
않는 경우가 있는 경우가 생긴다. 그러므로, 이와 같은 경우에는 상대적인 크기로 종료 조건을 설정해 주면 된다. &lt;br&gt;&lt;br&gt;이외에, 한번의 
TernarySearch 로 프로그램이 종료되는 경우 그냥 무조건 200번 정도 루프를 반복해 주는 것도 좋은 방법이다. `(2/3)^200 
&amp;gt; 1e-32` 이기 때문에, 200번 정도 루프를 돌고 나면 double 실수 범위 내에서 반드시 수렴하기 때문이다.&lt;br&gt;&lt;/div&gt;</content>
                  
   </entry>
</feed> 
