<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/">
    <channel>
        <title><![CDATA[algospot.com :: Open Lectures]]></title>
        <link><![CDATA[http://www.algospot.com/zbxe/?mid=openlecture]]></link>
        <description><![CDATA[]]></description>
        <language>ko</language>
        <pubDate>Wed, 07 Jan 2009 18:34:29 +0900</pubDate>
        <totalCount>10</totalCount>
                <item>
            <title><![CDATA[Open Lecture 게시판 이용 안내]]></title>
            <author><![CDATA[JM]]></author>
            <link><![CDATA[http://www.algospot.com/zbxe/?document_srl=604]]></link>
                        <description><![CDATA[<div class="xe_content">Open Lecture 게시판은 각종 알고리즘에 대한 강좌와 실제 대회들의 문제풀이들이 올라오는 곳입니다.<BR />관심이 있는 분은 누구나 글을 게재하실 수 있습니다만, 다음의 규칙을 지켜주셨으면 좋겠습니다.<BR /><BR />1. 어느 정도 완성된 형태의 글을 올려주세요.&nbsp;가능한한 표준어를 사용해 주시고,&nbsp;각종 용어는&nbsp;가능한한 정식 용어를 사용해 주셨으면 좋겠습니다. 예를 들면: &nbsp;'dijkstra 소스코드' 대신 'Dijkstra 의 최단거리 알고리즘' 같은 글을 작성해 주세요.<BR /><BR />2. 같은 문제에 대한 해설을 2명 이상이 중복해서 작성하는 것을 막기 위해 대회 문제의 해설을 올릴 때는 운영진에게 메일이나 MSN,&nbsp;혹은 IRC&nbsp;로 미리 연락을 주세요.<BR /><BR />3. 단 이미 게재되어 있는 문제의 해법과 다른 방식의 해법에 대해서 설명할 경우에는 중복으로 해설해도 좋습니다. ^^<BR /><BR />운영진 연락처는 다음과 같습니다:<BR />구종만 메일 jongman at gmail.com, MSN whinii at diva.yonsei.ac.kr<BR />정현환 메일 libe at ajou.ac.kr, MSN method4libe at hotmail.com</div>]]></description>
                        <pubDate>Tue, 25 Sep 2007 15:32:56 +0900</pubDate>
                    </item>
                <item>
            <title><![CDATA[IRC tutorial]]></title>
            <author><![CDATA[Being]]></author>
            <link><![CDATA[http://www.algospot.com/zbxe/?document_srl=2078]]></link>
                        <description><![CDATA[<div class="xe_content"><p>오늘 연습에서 D번을 어이없이 날려먹고 기운이 없어서 딴짓하는 Being입니다.<br /><br /><br /><br />오늘은 가장 많은 분들이 쓰시는듯한 X-iRC로 #icpc에 들어오시는 방법에 대해서 간단히 이야기하려고 합니다.<br /><br />사실 #icpc만큼 재미있는 곳도 없죠...ㅋㅋ<br /><br /><br /><br />Download : <a href="http://dgtalx.net/">http://dgtalx.net/</a> -> X-IRC DOWNLOAD에서 클라이언트를 다운로드 할 수 있습니다 (2.6.1).<br /><br />Install : 적당한 위치에 설치합니다.<br /><br />Config : 클라이언트를 실행하고, <br /><br /><img src="http://www.algospot.com/zbxe/files/attach/images/116/2078/IRC0.png" alt="IRC0.png" title="IRC0.png" class="iePngFix" style="" /><br /><br />를 누릅니다. (또는 기본->설정 또는 Ctrl+O)<br /><br /><img src="http://www.algospot.com/zbxe/files/attach/images/116/2078/IRC1.png" alt="IRC1.png" title="IRC1.png" class="iePngFix" style="" /><br /><br />HanIRC로 서버를 설정합니다. 닉네임도 설정하시고, 긴 이름과 메일 주소는 적당히 사실이 아닌 내용을 채워넣으셔도 상관없습니다. (닉네임은 대화 도중에 수시로 변경 가능합니다)<br /><br />접속하신 뒤,<br /><br />/join #icpc (또는 /j #icpc)<br /><br />라고 입력합니다.<br /><br />그러면 #icpc 탭이 생기면서 icpc 채널에 들어오시게 됩니다.<br /><br /><img src="http://www.algospot.com/zbxe/files/attach/images/116/2078/IRC2.png" alt="IRC2.png" title="IRC2.png" class="iePngFix" style="" /><br /><br />서버에 접속했을 때 자동으로 이 채널에 들어오게 하고 싶으시다면, 빈 공간에서 우클릭해 <br /><br /><img src="http://www.algospot.com/zbxe/files/attach/images/116/2078/IRC3.png" alt="IRC3.png" title="IRC3.png" class="iePngFix" style="" /><br /><br />위 메뉴에서 추가하시면 서버에 연결할 때마다 자동으로 접속하실 수 있습니다.<br /><br /><br /><br />이상으로 간략히 채널에 들어오는 방법에 대해서 설명드렸습니다. 다른 기능들에 대해서는 천천히 채널분들과 대화를 나누면서 배워가시는게 좋지 않을까요? :p</p></div>]]></description>
                        <pubDate>Fri, 12 Oct 2007 02:38:57 +0900</pubDate>
                    </item>
                <item>
            <title><![CDATA[TopCoder 에 대해 소개합니다]]></title>
            <author><![CDATA[JM]]></author>
            <link><![CDATA[http://www.algospot.com/zbxe/?document_srl=6377]]></link>
                        <description><![CDATA[<div class="xe_content">안녕하세요? 다음은 soyoja 님이 블로그에 쓰셨던 탑코더 소개글입니다. ^^<br />굉장히 잘 소개해 주신 것 같아 염치불구하고 허락을 받아 업어옵니다. <br /><br />---<br /><font face="verdana,arial,helvetica,sans-serif" size="2">리퍼러를 분석해 보면 </font><a style="" href="http://icpc.baylor.edu/icpc/" target="_blank"><font face="verdana,arial,helvetica,sans-serif" size="2">ACM-ICPC(세계대학생 프로그래밍 경진대회)</font></a><font face="verdana,arial,helvetica,sans-serif" size="2"> 나 프로그래밍 경시대회 정보를 검색하다 이곳에 오는 분들도 꽤 되는 것 같다. 그래서 오늘은 </font><a href="http://www.topcoder.com/" target="_blank"><font face="verdana,arial,helvetica,sans-serif" size="2">TopCoder</font></a><font face="verdana,arial,helvetica,sans-serif" size="2"> 에 대해서 소개하고자 한다. <br /><br />프
로그래밍 분야가 다른분야와 달리 어려운 점 중 하나는 프로그래머의 역량을 객관적수치로 평가하기가 어렵다는 것이다. 예를 들면
영어 능력은 토익/토플 과 같은 시험 성적을 통해 간접적으로 나마 평가가 가능하고, 운전 능력은 그 사람의 운전 경력과 무사고
몇년~ 이런 숫자를 통해 평가가 가능하다. <br /><br />하지만 프로그래머의 코딩 실력을 평가해보려면 어떻게 해야 하는가?? <a href="http://www.mic.go.kr/user.tdf?a=user.board.BoardApp&amp;c=2002&amp;board_id=P_03_04_04&amp;seq=430&amp;mc=P_03_04_04" target="_blank">정보통신부 노임단가 기준</a>대로 학력/경력/각종 자격증 소유 여부로 매겨야 하나?? 대답은 분명히 <strong>No</strong>
다. 프로그래밍 실력이 경력/학력/자격증과 정비례하지 않는 경우가 많다는 사실은 많은 현업 개발자들의 경험을 통해 입증되었다.
( IT 업계특성상 경력/학력이 높아질수록 엔지니어는 프로그래밍에서 멀어지고 아키텍트 or 관리자를 지향하게 된다. )<br /><br />그래서 프로그래머의 역량을 측정하기 위한 방법중 하나로 도입된 것이 바로 알고리즘과 문제해결 능력을 묻는 코딩문제를 얼마나 잘 푸는지를 평가하는 방식이다. </font><a href="http://olympiads.win.tue.nl/ioi/" target="_blank"><font face="verdana,arial,helvetica,sans-serif" size="2">IOI (국제 정보 올림피아드)</font></a><font face="verdana,arial,helvetica,sans-serif" size="2"> 나 </font><a href="http://icpc.baylor.edu/icpc/" target="_blank"><font face="verdana,arial,helvetica,sans-serif" size="2">ACM-ICPC</font></a><font face="verdana,arial,helvetica,sans-serif" size="2"> 와 같은 알고리즘 문제풀이 대회를 학교와 교육기관에서 매년 많은 예산을 들여 개최하고, Google, MS 같은 IT 기업들이 개발자들의 입사시험 문제로 알고리즘 코딩 문제를 내는 것은 바로 이러한 이유 떄문일 것이다. <br /><br />하지만 IOI 와 ACM-ICPC 는 소수의 학생들을 대상으로 한정되어 있고, </font><a href="http://acm.uva.es/p/" target="_blank"><font face="verdana,arial,helvetica,sans-serif" size="2">UVa</font></a><font face="verdana,arial,helvetica,sans-serif" size="2"> 나 </font><a href="http://acm.pku.edu.cn/JudgeOnline/" target="_blank"><font face="verdana,arial,helvetica,sans-serif" size="2">PKU</font></a><font face="verdana,arial,helvetica,sans-serif" size="2"> , </font><a href="http://ace.delos.com/usacogate" target="_blank"><font face="verdana,arial,helvetica,sans-serif" size="2">USACO</font></a><font size="2"><font face="verdana,arial,helvetica,sans-serif"> 와 같은 프로그래밍 연습 사이트도 존재하나 비영리 사이트인 관계로 정기적인 온라인 대회도 별로 없고, 학습자료나 풀이방법에 대한 친철한 가이드도 부족하여 체계적으로 프로그래밍 연습을 하기엔 불편한 점이 많다.<br /><br />이 와중에 미국의 한 회사가 정기적으로 온라인상에서 전세계 모든 개발자들을 대상으로 알고리즘 문제풀이 대회를 개최하고, 결과를 Rating 시스템을 도입해 수치/등수화한 것이 있으니 바로 TopCoder 매치이다. <br /><br /><img src="http://www.algospot.com/zbxe/files/attach/images/116/6377/download.blog.jpeg" alt="download.blog.jpeg" title="download.blog.jpeg" style="" /><br /><div class="imageblock center" style="text-align: center; clear: both;"><a href="http://cfs3.tistory.com/upload_control/download.blog?fhandle=YmxvZzY2MDY1QGZzMy50aXN0b3J5LmNvbTovYXR0YWNoLzAvMzcuSlBH" rel="lightbox" target="_blank"></a></div><br />TopCoder Inc. 라는<span id="callbacknestsoyojacom563771" style="width: 1px; height: 1px; float: right;"><embed allowscriptaccess="always" id="bootstrappersoyojacom563771" src="http://soyoja.com/plugin/CallBack_bootstrapperSrc" wmode="transparent" type="application/x-shockwave-flash" enablecontextmenu="false" flashvars="&amp;callbackId=soyojacom563771&amp;host=http://soyoja.com&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" swliveconnect="true" height="1" width="1"></span>
회사의 모토를 보면, 개발자들의 역량을 객관적으로 평가하기 위한 온라인 프로그래밍 대회 서비스를 열고, 이 결과들을 통해 여러
회사들이 개발자들을 쉽게 채용을 할 수 있는 Employment Service 를 연결하고 있다. (TopCoder Inc. 는
이런 회사들의 스폰서쉽이 주 수입원인 것 같다) <br /><br />프로그래밍 대회는 Algorithm 분야 및
Design(컴포넌트 설계), Development(컴포넌트 개발), Marathon Match(2주간의 장기 코딩대회) 로
나뉘어지며, 본인이 참여하고 있는 Algorithm 매치는 주 1회 꼴로 열리는 SRM(Single Round Match) 을
통해서 성적이 매겨진다. <br /></font><br /><font face="verdana,arial,helvetica,sans-serif">현재 한국에서는 60 여명의 코더가 활동중이며, </font></font><a href="https://www.topcoder.com/stat?c=country_avg_rating" target="_blank"><font face="verdana,arial,helvetica,sans-serif" size="2">한국의 국가 순위</font></a><font face="verdana,arial,helvetica,sans-serif" size="2">는 이글을 쓰는 현재 15위 이다. TopCoder 를 통해 전세계의 개발자들 중에서 자신이 어느정도 위치인지 대략적으로나마 알수 있고, 또 자신을 단련하는 좋은 연습장이 될 수 있다. 그리고 무엇보다도 정말 재미있다! ^^ <br /><br />자... 그럼 혹시 TopCoder 에 가입하고 싶은 분들이 계신가.. <br /><br /></font><a href="http://www.topcoder.com/reg/" target="_blank"><font face="verdana,arial,helvetica,sans-serif" size="2">http://www.topcoder.com/reg/</font></a><font face="verdana,arial,helvetica,sans-serif" size="2"> <br /><br />위의 링크에 가서 Competition Registration 항목을 선택하고 가입하면 된다... <br />참고로 가입시 적는 항목중 "Referring Member" 란 항목이 있는데, 추천회원을 의미한다. 이 글을 보고 가입하려는 분들은 글쓴이의 수고를 생각해서 <strong>Soyoja</strong> 라고 써 주면 감사하겠다 =D  (싫다면 할 수 없다. ㅎㅎ)<br /><br />대회 방식은 간단하다. TopCoder 에 회원 등록을 한 후 Java 로 만들어진 Competetion Arena 라는 프로그램을 다운받고, </font><a href="http://www.topcoder.com/tc?module=Static&amp;d1=calendar&amp;d2=thisMonth" target="_blank"><font face="verdana,arial,helvetica,sans-serif" size="2">Event Calendar</font></a><font face="verdana,arial,helvetica,sans-serif" size="2"> 
를 보고 SRM 이 열리는 시간에 접속해서 대회를 하면 된다. (표시된 시간은 미국 동부 표준시인 것을 주의) SRM 은 코딩
75분, 5분 휴식 후 다른 사람들이 짠 코드의 버그를 잡는 Challenge 15 분으로 총 2 시간 정도가 소요된다. <br /><br />회원 가입 및 TopCoder 활동은 모두 무료이며... 대회에서 성적이 좋으면 여러가지 재미난 혜택들이 많으니 많은 한국 개발자분들의 참여가 있으면 좋겠다... =) <br /><br /><br /><br />----<br /><br />글 제공을 흔쾌히 허락해 주신 soyoja 님, 감사합니다. ^^ 원문 링크는 <a href="http://soyoja.com/56" onclick="window.open(this.href);return false;" class="editor_blue_text">여기</a> 입니다.<br /></font></div>]]></description>
                        <pubDate>Thu, 29 Nov 2007 16:15:28 +0900</pubDate>
                    </item>
                <item>
            <title><![CDATA[PC^2 external validator]]></title>
            <author><![CDATA[Being]]></author>
            <link><![CDATA[http://www.algospot.com/zbxe/?document_srl=51625]]></link>
                        <description><![CDATA[<div class="xe_content"><div>PC^2는 자체 validator class를 내장하고 있습니다. 그런데 이 클래스가 매우 빈약하고 골치아픕니다. 이 클래스로 인한 문제는 지난 알고스팟 1주년 기념 모의고사에서의 대량 리저지 사태가 대표적입니다. 이 리저지에는 두 가지 요인이 있었는데,<br /></div><div><br /></div><div>* 저지의 답안이 500kb를 넘는데, 사용자의 답안으로부터 출력을 얻어낼 때에 500kb를 넘겨 강제로 500kb에서 잘림</div><div><br /></div><div>* trailing space (맨 뒤에 뒤따라오는 공백들)를 무시하지 않아 맨 뒤에 공백을 저지의 답안과 다르게 출력한 경우 WA로 처리되는 현상</div><div><br /></div><div>이 두 가지입니다. 후자의 경우 제가 2007년 베트남 다낭 사이트 리져널에 갔을 때....(남자는 웁니다) A를 fastest? 2nd fastest?로 냈는데 WA가 나와서 대회 시간 내내 고민하다가 297분만에 맨 뒤에 공백을 지우니 Yes가 된 경험에도 연결되어 있네요. (당시 그쪽 환경은 완전히 automated judge여서, 리저지따위 할 생각이 없었죠..)</div><div><br /></div><div><br /></div><div><br /></div><div>그래서 지난 알고스팟 모의고사 때는 (두 번째 요인 관련해서) 답안을 모두 손으로...까진 아니고 저의 경우는 생성된 결과 파일을 vim으로 띄워 %s/ $//g하고 fc를 사용하여 일일이 비교했었는데, 다행히도 PC^2는 external validator를 지원합니다.</div><div><br /></div><div>이 external validator는 생각보다 간단합니다.</div><div><br /></div><div><ol><li>PC^2에서 external validator를 설정하면, execution 이후에 validator를 실행합니다.<br /></li><li>이 validator에는 input file, output file, answer file, result file path, validator 총 다섯 개의 변수가 전달될 수 있습니다. 이 변수들은 PC^2의 문제 설정에서 Validator Command Line에 지정될 수 있습니다.<br /></li><li>각각의 변수가 의미하는 바는 다음과 같습니다.</li><ol><li>input file {:infile} 은 말 그대로 입력 파일입니다. <br /></li><li>output file {:outfile} 은 실행하여 만들어낸 사용자의 답안입니다.<br /></li><li>answer file {:ansfile} 은 저지의 답안입니다.<br /></li><li>result file path {:resfile} 는 PC^2가 임의로 지정하는 경로로써, 이 경로에 표준 형식에 맞는 XML을 출력하면 됩니다(새로운 파일을 생성하면 됩니다).<br /></li><li>validator {:validator} 는 PC^2의 problem 설정에서, validator program으로 지정하는 파일입니다. 이 파일은 서버에 보관되고 있다가 저지가 답안을 채점할 때마다 복사됩니다. 이 성질 때문에 파일은 여러 가지로 유용하게 사용할 수 있습니다. <br /></li><ol><li>먼저, 이 파일을 (이를테면) validator.exe라는 파일로 둠으로써 저지가 미리 이러한 파일들을 시스템에 설치하지 않고도 채점할 때 자동으로 서버에서 내려받아 실행하게 할 수 있습니다.<br /></li><li>이 파일을 어떤 다른 validator에 인자로 전달할 수 있습니다. 예를 들어서 validator로 지정된 파일이 루비 스크립트 파일이라면, ruby {:validator} ... 와 같이 실행시킬 수 있습니다. 위에서와 마찬가지로 이 파일은 매번 복사됩니다.<br /></li><li>이 파일을 무시해도 됩니다. 그런데 이 파일이 없으면 귀찮은 문제가 발생하므로, 아무 파일이나 설정하면 됩니다. (단, 설정한 파일의 길이가 0이면 또 칭얼대니 1바이트 이상인 파일로 설정) 이렇게 설정한 경우, 모든 저지들의 특정한 절대경로에 validator들을 준비하거나 저지들이 각자 PATH 변수를 등록하게 해서 실행해야 할 것입니다.</li></ol></ol><li>result file에 저장되어야 하는 xml의 형식은 다음과 같습니다. (xsd가 있긴 한데 그런 거 필요 없을 정도로 간단합니다)<br />[code xml]<br />&lt;?xml version="1.0"?><br />&lt;result outcome="###" security="@@@">%%%&lt;/result><br />[/code]<ol><li>###에는 PC^2에 지정된 result message를 그대로 써 주시면 됩니다. (default message에는 "Yes", "No - Wrong Answer" 등이 있겠죠).<br /></li><li>@@@에는 이 파일의 이름 - {:resfile} - 을 그대로 써 주시면 됩니다. 보안을 위해 만든 부분이라고 하네요. (e.g. 784XRSAM.txt)</li><li>%%%에는 메세지를 써 주실 수 있는데, 큰 의미는 없습니다.</li></ol></li></ol><br /></div><div>첨부된 파일은 이번 알고스팟 모의고사에서 (아마도) 사용될 validator입니다. JM님이 알고스팟 저지를 완성하시면 용도폐기되겠습니다만.. ruby로 코드되어 있습니다(만 이딴걸 루비 코드냐고 할 정도로 루비답지 못합니다...ㅠㅠ). 커맨드라인 옵션 때문에 gem을 하나 사용합니다. gem install -r OptionParser 명령으로 설치해 주시면 됩니다. 현재 작업 디렉토리와 관계없이 잘 작동해서, PC^2에서 설정할 때에는 ruby c:\validator\main.rb와 같이 설정해 주시면 됩니다. 여러 개의 파일로 구성된 까닭에, {:validator} 변수를 적절히 사용하기는 어렵습니다. 아래는 option list page입니다.</div><div><br /></div><div><div></div><div editor_component="quotation" use_folder="N" folder_opener="더 보기..." folder_closer="닫기" bold="N" color="blue" margin="5" padding="5" border_style="left_solid" border_thickness="1" border_color="000000" bg_color="FFFFFF" style="margin:5px; padding:5px; background-color:#FFFFFF;border-left:1px solid #000000;"><div>OPTIONS</div><div><br /></div><div>    --validator,-v</div><div>        Specifies validator class name (default: Validator)</div><div><br /></div><div>    --input,-i</div><div>        Specifies input data file</div><div><br /></div><div>    --output,-o</div><div>        Specifies contestant's output file</div><div><br /></div><div>    --answer,-a</div><div>        Specifies judge's answer file</div><div><br /></div><div>    --result,-r</div><div>        Specifies path to generate xml-formatted file</div><div><br /></div><div>    --left-strip,-L</div><div>        Set to strip any leading whitespaces</div><div><br /></div><div>    --right-strip,-R</div><div>        Set to strip any trailing whitespaces</div><div><br /></div><div>    --ignore-empty-lines,-E</div><div>        Set to ignore all empty lines</div><div><br /></div><div>    --remove-whitespace,-A</div><div>        Set to remove all whitespaces</div><div><br /></div><div>    --ignore-case,-C</div><div>        Set to ignore cases</div><div><br /></div><div>    --help,-h</div><div>        Prints this page</div></div></div><div><br /></div><div>예를 들어,<br /></div><div><br /></div><div>ruby main.rb -i input.txt -o output.txt -a output.ans -r result.xml</div><div><br /></div><div>와 같이 하면 아무런 옵션 없이 line-by-line 비교를 수행합니다 (공백까지 철저히). 만약에 trailing space를 무시하고 싶다면 -R 옵션을 주시면 됩니다. 그렇게 PC^2에서 설정할 때에는 <br /></div><div><br /></div><div><div>ruby c:\validator\main.rb -i {:infile} -o {:outfile} -a {:ansfile} -r {:resfile} -R</div><div><br /></div><div>위와 같이 설정하면 됩니다.</div><div><br /></div><div>-v 옵션은 validator class를 지정하는 옵션인데, 압축을 풀어 보시면 알겠지만 ./extras/ 에 FloatingPointValidator.rb 파일이 있습니다. 이 파일에는 실수 오차를 고려하는 FloatingPointValidator 클래스가 구현되어 있습니다. 그래서, -v FloatingPointValidator 옵션을 주면 이 클래스를 사용하여 비교를 수행합니다. 이외에 추가하고 싶으신 클래스가 있으시다면 이 파일을 참조해서 구현하신 후, ./extras/ 디렉토리에 넣어 주시면 main.rb가 스캔하여 모든 파일을 불러옵니다. ./tests/ 디렉토리에는 unit test가 있습니다.</div><div><br /></div><div>사족: -v 옵션에서 지정한 파일만 require 하게 구현했으면 훨씬 깔끔했을텐데 아쉽네요. 더 손대기는 귀찮고..</div></div></div>]]></description>
                        <pubDate>Wed, 29 Oct 2008 03:13:26 +0900</pubDate>
                    </item>
                <item>
            <title><![CDATA[PC^2 의 컴파일 환경 설정 (Test/Judge)]]></title>
            <author><![CDATA[Being]]></author>
            <link><![CDATA[http://www.algospot.com/zbxe/?document_srl=49656]]></link>
                        <description><![CDATA[<div class="xe_content">PC^2에서 Judge를 수행하거나 Test 기능을 사용하기 위해서는, 서버에서 정의된 컴파일 명령을 지원할 수 있도록 시스템의 설정을 변경하여야 합니다. Test 기능을 사용하시는 것보다는 직접 콘솔이나 IDE에서 해결하시기를 바랍니다마는, 기능이 혹시 필요하신 분들은 아래의 절차를 따라 주십시오. 이 글은 Windows 시스템을 기준으로 합니다.<br /><br />제어판-시스템-고급-환경 변수에서 아래의 경로를 추가합니다. (여러 원소를 구분할 때는 ; 기호를 사용하고, 없는 변수는 새로이 생성합니다)<br /><br /><b>* Visual C++ 사용자의 경우 (9.0 기준)</b><br /><br />&nbsp;INCLUDE 변수에 (Visual Studio 설치 경로)\VC\include 추가<br />&nbsp;LIB 변수에 (Visual Studio 설치 경로)\VC\lib 추가<br />&nbsp;LIB 변수에 (Microsoft SDK 설치 경로)\Windows\v6.0A\Lib 추가<br />&nbsp;PATH 변수에 (Visual Studio 설치 경로)\VC\bin 추가<br />&nbsp;PATH 변수에 (Visual Studio 설치 경로)\Common7\IDE 추가<br /><br /># 다른 버전이어서 해당하는 경로가 없는 경우 VC7 등의 상이한 경로를 찾아 보시기 바랍니다.<br /><br /># VC 6.0 사용자의 경우 설정이 약간 상이할 수 있으나 비슷합니다. 가급적이면 6.0을 사용하지 않는 것을 추천합니다.<br /><br /><i>확인: Command Prompt에서 cl 이라고 입력해 봅니다.</i><br /><br /><b><br /><br />* Sun Java 사용자의 경우</b><br /><br />&nbsp;PATH 변수에 (JDK 설치 경로)\bin 추가<br /><br /><i>확인: Command Prompt에서 javac -version 이라고 입력해 봅니다.</i><br /><br /><b><br /><br />* GNU C/C++ Compiler (MinGW) 사용자의 경우</b><br /><br />&nbsp;PATH 변수에 (mingw 설치 경로)\bin 추가<br /><br /><i>확인: Command Prompt에서 gcc/g++ -dumpversion 이라고 입력해 봅니다.</i><br /><br /></div>]]></description>
                        <pubDate>Sat, 20 Sep 2008 03:54:23 +0900</pubDate>
                    </item>
                <item>
            <title><![CDATA[plugins 사용하기]]></title>
            <author><![CDATA[nocut98]]></author>
            <link><![CDATA[http://www.algospot.com/zbxe/?document_srl=43356]]></link>
                        <description><![CDATA[<div class="xe_content"><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;"><font face="돋움">처음에 개발창을 키면<span lang="EN-US">, IDE</span>를 쓰던 사람들은<span lang="EN-US">(</span>물론<span lang="EN-US"> vi </span>에디터를 쓰던 사람이라고 기본 개발창이 편할지는<span lang="EN-US">...</span>먼산<span lang="EN-US">) </span>상당히 불편하죠</font><font face="돋움"><span lang="EN-US">.<br /></span>그래서 이번에는<span lang="EN-US"> C++ </span>언어를<span lang="EN-US"> VC++</span>을 통해서 쓰던 사람들을 위해서<span lang="EN-US"> plugin </span>설정 방법에 대해서 알아보려고 합니다</font><font face="돋움"><span lang="EN-US">.<br /><br />[ </span>개발 환경</font><font face="돋움"><span lang="EN-US"> ] visual.c++2005 + visual assist X + plugins(FileEdit, TZTester 1.01, CodeProcessor)<br />plugins</span>를 통해서 아레나 안의 문제와 예제를 컴퓨터 파일 안의<span lang="EN-US"> *.cpp </span>파일로 만들어서<span lang="EN-US"> VC++</span>로 컴파일 및 테스트 하고 다시 아레나에 올려서 컴파일 해서 제출하는 방식을 취하게 됩니다</font><font face="돋움"><span lang="EN-US">.<br /><br />[ </span>간단한 소개</font><font face="돋움"><span lang="EN-US"> ]<br /></span><strong><span style="font-family: '맑은 고딕';">아레나</span></strong><span lang="EN-US"> : </span>탑코딩을 하기 위해서 들어가는 자바 어플릿</font><span lang="EN-US"><br /><font face="돋움"><strong><span style="font-family: '맑은 고딕';">visual.c++2005</span></strong> : </font></span><font face="돋움"><span lang="EN-US">for(int i=0;;) for(int i=0;;) {}&nbsp;</span>같은 문법이<span lang="EN-US">&nbsp;</span>아레나에서는 컴파일 되고<span lang="EN-US"> vc++6.0</span>에서는<span lang="EN-US">&nbsp;</span>컴파일 안되었지만<span lang="EN-US">, 2005</span>에서는 컴파일 됩니다<span lang="EN-US">(</span>원활한 코딩을 위해서<span lang="EN-US"> 6.0</span>보다<span lang="EN-US"> 2005</span>를 쓰는 게 좋겠죠<span lang="EN-US">) </span>설치 하실 때는<span lang="EN-US"> vc++</span>만 깔면<span lang="EN-US"> 1</span>기가 정도로 깔려요<span lang="EN-US">- (</span><s>쓰잘데 없는</s> 다른 것들은 즐</font><font face="돋움"><span lang="EN-US">~ -_-)<br /><strong><span style="font-family: '맑은 고딕';">visual assist X</span></strong> : </span>갠적으로 생각하는 최고의<span lang="EN-US"> VC++ plugin</span>입니다<span lang="EN-US">. </span>쓰다보면 중독되서 비줠어시스트 없는 세상은 살기가 싫어진다는<span lang="EN-US">... </span>ㅠ<span lang="EN-US">_</span>ㅠ 대표적인 기능으로는 자동완성<span lang="EN-US">, </span>문법 틀린 거 밑줄<span lang="EN-US">, </span>선언부 찾아가기<span lang="EN-US">, </span>파일내 함수 이동<span lang="EN-US">, .cpp .h </span>이동 등등이 있습니다</font><span lang="EN-US"><br /><font face="돋움"><strong><span style="font-family: '맑은 고딕';">plugins(FileEdit, TZTester 1.01, CodeProcessor)</span></strong> : FileEdit</font></span><font face="돋움">은 문제를<span lang="EN-US"> cpp</span>파일로 만들어 주고<span lang="EN-US">, TZTester</span>는 파일 안에 예제 테스트를 가능하게 해줍니다<span lang="EN-US">. CodeProcessor</span>는 앞에<span lang="EN-US"> 2</span>개를 합쳐줍니다</font><font face="돋움"><span lang="EN-US">.<br /><br />[ </span>설치</font><font face="돋움"><span lang="EN-US"> ] <br /></span>일단<span lang="EN-US">&nbsp;1.jar</span>파일을 저장할 폴더<span lang="EN-US">, 2. </span>문제<span lang="EN-US"> cpp </span>파일들이 나올 폴더를 만들어 둡니다</font><font face="돋움"><span lang="EN-US">.<br /></span>참고로 저는<span lang="EN-US"> 1. C:\topcoder\plugins&nbsp; 2. C:\topcoder </span>라는 폴더를 만들어 두었습니다</font><font face="돋움"><span lang="EN-US">.<br />(</span>이후에 폴더의 디렉토리가 바뀌면 안되기 때문에<span lang="EN-US"> C</span>드라이브의 폴더를 이용했습니다</font><font face="돋움"><span lang="EN-US">)<br /></span>이제<span lang="EN-US">&nbsp;<strong><span style="font-family: '맑은 고딕';">FileEdit, TZTester 1.01, CodeProcessor&nbsp;</span></strong>&nbsp;</span>의<span lang="EN-US"> jar</span>파일을 받아서<span lang="EN-US"> 1.jar</span>파일을 저장할 폴더에 저장합시다</font><span lang="EN-US"><font face="돋움">.<br /></font></span></span><font face="돋움"><span style="font-size: 9pt; font-family: 'Arial','sans-serif';" lang="EN-US">jar</span><span style="font-size: 9pt;">파일</span><span style="font-size: 9pt; font-family: 'Arial','sans-serif';"> </span><span style="font-size: 9pt;">받는</span><span style="font-size: 9pt; font-family: 'Arial','sans-serif';"> </span><span style="font-size: 9pt;">곳</span><span style="font-size: 9pt; font-family: 'Arial','sans-serif';" lang="EN-US"> + </span><span style="font-size: 9pt;">각</span><span style="font-size: 9pt; font-family: 'Arial','sans-serif';" lang="EN-US"> plugin </span><span style="font-size: 9pt;">설명</span></font><span style="font-size: 9pt; font-family: 'Arial','sans-serif';" lang="EN-US"><font face="돋움">: </font><a href="http://www.topcoder.com/tc?module=Static&amp;d1=applet&amp;d2=plugins"><font face="돋움">http://www.topcoder.com/tc?module=Static&amp;d1=applet&amp;d2=plugins</font></a><br /></span><font face="돋움"><span style="font-size: 9pt; font-family: 'Arial','sans-serif';" lang="EN-US"><br /></span><span style="font-size: 9pt;">자</span><span style="font-size: 9pt; font-family: 'Arial','sans-serif';"> </span><span style="font-size: 9pt;">이제</span><span style="font-size: 9pt; font-family: 'Arial','sans-serif';"> </span><span style="font-size: 9pt;">아레나를</span><span style="font-size: 9pt; font-family: 'Arial','sans-serif';"> </span><span style="font-size: 9pt;">킵니다</span></font><span style="font-size: 9pt; font-family: 'Arial','sans-serif';" lang="EN-US"><font face="돋움">.<br /></font></span><font face="돋움"><span style="font-size: 9pt;" lang="EN-US"><img src="http://www.algospot.com/zbxe/files/attach/images/116/43356/0.arena.jpg" alt="0.arena.jpg" title="0.arena.jpg" style="" /></span><span style="font-size: 9pt;">친숙한</span><span style="font-size: 9pt; font-family: 'Arial','sans-serif';"> </span><span style="font-size: 9pt;">아레나</span><span style="font-size: 9pt; font-family: 'Arial','sans-serif';"> </span><span style="font-size: 9pt;">창</span><span style="font-size: 9pt; font-family: 'Arial','sans-serif';" lang="EN-US"> , </span><s><span style="font-size: 9pt;">어둠</span></s><span style="font-size: 9pt;">깜장의</span><span style="font-size: 9pt; font-family: 'Arial','sans-serif';"> </span><span style="font-size: 9pt;">포스</span><span style="font-size: 9pt; font-family: 'Arial','sans-serif';" lang="EN-US">-<o:p></o:p></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'Arial','sans-serif';" lang="EN-US"><o:p><font face="돋움">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font face="돋움"><span style="font-size: 9pt;">이제</span><span style="font-size: 9pt; font-family: 'Arial','sans-serif';" lang="EN-US"> Option – Editor </span><span style="font-size: 9pt;">창을</span><span style="font-size: 9pt; font-family: 'Arial','sans-serif';"> </span><span style="font-size: 9pt;">클릭합니다</span><span style="font-size: 9pt; font-family: 'Arial','sans-serif';" lang="EN-US"> (</span><span style="font-size: 9pt;">무척</span><span style="font-size: 9pt; font-family: 'Arial','sans-serif';"> </span><span style="font-size: 9pt;">세심한</span><span style="font-size: 9pt; font-family: 'Arial','sans-serif';"> </span><span style="font-size: 9pt;">설명</span><span style="font-size: 9pt; font-family: 'Arial','sans-serif';"> </span><span style="font-size: 9pt;">ㅋㅋㅋ</span><span style="font-size: 9pt; font-family: 'Arial','sans-serif';" lang="EN-US">)<o:p></o:p></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움"><img src="http://www.algospot.com/zbxe/files/attach/images/116/43356/1.menu_editor.jpg" alt="1.menu_editor.jpg" title="1.menu_editor.jpg" style="" /></font></span><span style="font-size: 9pt;"><font face="돋움">방에 제가 좋아하는 간지 좔좔<span lang="EN-US"> Target “82</span>년생<span lang="EN-US">” bmerry</span>가 보이는 군요<span lang="EN-US">. MB__</span>는 맨날 있는 친구<span lang="EN-US">, </span>대선도 끝났는데 이제 그만</font><span lang="EN-US"><font face="돋움">-<br style="" /><br style="" /><o:p></o:p></font></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;"><font face="돋움">클릭 하면 아래와 같은 창이 뜹니다</font><font face="돋움"><span lang="EN-US">.<br /><span style=""><v:shape id="그림_x0020_3" style="visibility: visible; width: 450.75pt; height: 240.75pt;" o:spid="_x0000_i1036" type="#_x0000_t75"><v:imagedata src="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image005.png" o:title=""></v:imagedata></v:shape></span></span><img src="http://www.algospot.com/zbxe/files/attach/images/116/43356/2.Editor_pref.jpg" alt="2.Editor_pref.jpg" title="2.Editor_pref.jpg" style="" />썰렁 하네요<span lang="EN-US">. Standard</span>를 빼고 딴 건 지워 버리세요<span lang="EN-US">. Kawigiedit</span>같은 거요<span lang="EN-US">(</span>참고로 안 지워도 전혀 상관 없습니다<span lang="EN-US">) </span>좌측 하단에<span lang="EN-US"> Add </span>버튼을 클릭합니다<span lang="EN-US">(</span>이것도 캡춰 뜰려다 참았습니다 ㅋㅋ</font><font face="돋움"><span lang="EN-US">)<br /><img src="http://www.algospot.com/zbxe/files/attach/images/116/43356/3.Plugin_info.jpg" alt="3.Plugin_info.jpg" title="3.Plugin_info.jpg" style="" /></span>보이는 것처럼 적어줍니다<span lang="EN-US">. ClassPath</span>는 각자<span lang="EN-US"> jar</span>파일이 있는 위치로 설정하면 됩니다</font><span lang="EN-US"><font face="돋움">.<br style="" /><img src="http://www.algospot.com/zbxe/files/attach/images/116/43356/4.Fileedit.jpg" alt="4.Fileedit.jpg" title="4.Fileedit.jpg" style="" /></font></span></span><span style="font-size: 9pt;"><font face="돋움">오<span lang="EN-US">- </span>추가 되었네요<span lang="EN-US"><o:p></o:p></span></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">Configure</font></span><span style="font-size: 9pt;"><font face="돋움">를 눌러서<span lang="EN-US"> cpp</span>파일이 나올 위치를 적어 줍니다<span lang="EN-US">(</span>상단에<span lang="EN-US"> C:\topcoder</span>라고 되어 있는 부분)<br /><img src="http://www.algospot.com/zbxe/files/attach/images/116/43356/5.Fileedit_conf.jpg" alt="5.Fileedit_conf.jpg" title="5.Fileedit_conf.jpg" style="" /></font></span><span style="font-size: 9pt;"><font face="돋움">코드 템플릿은 조금 있다가 건드려 보죠<span lang="EN-US">(</span>부록<span lang="EN-US">A</span>로 제<span lang="EN-US"> Template</span>를 적어놨습니다</font><font face="돋움"><span lang="EN-US">) <br /><br /></span>이번에는<span lang="EN-US"> Code processor</span>와<span lang="EN-US"> TZTester</span>를 한꺼번에 추가할 차례입니다<span lang="EN-US">. </span>바로 전 화면<span lang="EN-US">(Editor Preference)</span>에서 다시<span lang="EN-US"> Add </span>버튼을 클릭합니다<span lang="EN-US">. </span></font></span><span style="font-size: 9pt;"><font face="돋움">그리고 아래와 같이 입력합니다<br /><img src="http://www.algospot.com/zbxe/files/attach/images/116/43356/6.codeprocessor_info.jpg" alt="6.codeprocessor_info.jpg" title="6.codeprocessor_info.jpg" style="" /></font></span><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">!! </font></span><span style="font-size: 9pt;"><font face="돋움">매우 주의할 점<span lang="EN-US">: ClassPath</span>에는<span lang="EN-US"> fileedit, TZTester, codeprocessor</span>의<span lang="EN-US"> 3</span>개의<span lang="EN-US"> jar</span>를 모두 넣어 줍니다<span lang="EN-US">. Browse</span>버튼을 여러 번 클릭하면 됩니다<span lang="EN-US">(</span>가끔 <s>저처럼</s> 어떻게 여러 개를 동시에 추가하는 지 모르는 한심한 사람들이 있습니다<span lang="EN-US">) OK</span>버튼을 클릭하고<span lang="EN-US">, </span>잘 추가되었으면 다시<span lang="EN-US"> Configure</span>버튼을 눌러서 설정을 합니다</font><span lang="EN-US"><font face="돋움">.<br /><o:p></o:p></font></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font face="돋움"><span style="font-size: 9pt;" lang="EN-US"><v:shape id="그림_x0020_11" style="visibility: visible; width: 450.75pt; height: 127.5pt;" o:spid="_x0000_i1031" type="#_x0000_t75"><v:imagedata src="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image015.png" o:title=""></v:imagedata></v:shape></span><span style="font-size: 9pt;" lang="EN-US"><o:p></o:p></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font face="돋움"><span style="font-size: 9pt;" lang="EN-US"><img src="http://www.algospot.com/zbxe/files/attach/images/116/43356/7.codeprocessor_conf.jpg" alt="7.codeprocessor_conf.jpg" title="7.codeprocessor_conf.jpg" style="" />Editor</span><span style="font-size: 9pt;">와<span lang="EN-US"> Processor class</span>의 시작 위치를 적어줍니다<span lang="EN-US">(</span>그냥 똑같이 적어주시면 됩니다<span lang="EN-US">. Verify </span>버튼 한 번 눌러 주시구요<span lang="EN-US">. Save</span>나<span lang="EN-US"> Close </span>눌렀을 때 에러 메시지 뜨면<span lang="EN-US">, ClassPath</span>에서 포함을 안 시켜줬을 확률이 높아요<span lang="EN-US">.<o:p></o:p></span></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;"><font face="돋움">아래와 같은 화면이 보이면 됩니다</font><span lang="EN-US"><font face="돋움">.<br /><o:p></o:p></font></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font face="돋움"><span style="font-size: 9pt;" lang="EN-US"><v:shape id="그림_x0020_12" style="visibility: visible; width: 450.75pt; height: 240.75pt;" o:spid="_x0000_i1030" type="#_x0000_t75"><v:imagedata src="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image017.png" o:title=""></v:imagedata></v:shape></span><span style="font-size: 9pt;" lang="EN-US"><o:p></o:p></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;"><font face="돋움"><img src="http://www.algospot.com/zbxe/files/attach/images/116/43356/8.setting_end.jpg" alt="8.setting_end.jpg" title="8.setting_end.jpg" style="" />와<span lang="EN-US">- </span>드디어 기나긴 여정의 중간 까지는 왔습니다<span lang="EN-US">.<o:p></o:p></span></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font face="돋움"><span style="font-size: 9pt;" lang="EN-US">Save</span><span style="font-size: 9pt;">하고<span lang="EN-US">, </span>닫은 담에 문제를 하나 열어보아요<span lang="EN-US">- ( SRM 146 Div 2 – 1000 </span>문제<span lang="EN-US"> )<o:p></o:p></span></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;"><font face="돋움">평소랑 다릅니다</font><span lang="EN-US"><font face="돋움">.<br /><o:p></o:p></font></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font face="돋움"><span style="font-size: 9pt;" lang="EN-US"><v:shape id="그림_x0020_13" style="visibility: visible; width: 450.75pt; height: 376.5pt;" o:spid="_x0000_i1029" type="#_x0000_t75"><v:imagedata src="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image019.png" o:title=""></v:imagedata></v:shape></span><span style="font-size: 9pt;" lang="EN-US"><o:p></o:p></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;"><font face="돋움"><img src="http://www.algospot.com/zbxe/files/attach/images/116/43356/8-2.arena.jpg" alt="8-2.arena.jpg" title="8-2.arena.jpg" style="" />코딩<span lang="EN-US"> Area</span>에 코딩을 할 수가 없네요 ㅡ<span lang="EN-US">.</span>ㅜ<span lang="EN-US">; </span>당황하지 말고<span lang="EN-US">, C:\topcoder</span>로 갑니다<span lang="EN-US">.<o:p></o:p></span></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;"><font face="돋움">더블 클릭해서 파일을 열면<span lang="EN-US">, </span>컴파일이 안됩니다<span lang="EN-US">(</span>이거 방법 아시는 분 있으면 알려주세요 굽신굽신<span lang="EN-US">)<o:p></o:p></span></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;"><font face="돋움">그래서 그냥 빈 프로젝트를 하나 만들어서<span lang="EN-US"> cpp </span>파일을 추가합니다<span lang="EN-US">. </span>저 같은 경우는<span lang="EN-US"> topcoder </span>디렉토리에 빈 프로젝트 만들어 놓고 필요한<span lang="EN-US"> cpp</span>파일만 추가해서 쓰고 있습니다<span lang="EN-US">(</span>좌측<span lang="EN-US"> solution </span>창에서 파일을<span lang="EN-US"> add</span>합니다</font><span lang="EN-US"><font face="돋움">)<br /><o:p></o:p></font></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font face="돋움"><span style="font-size: 9pt;" lang="EN-US"><v:shape id="그림_x0020_14" style="visibility: visible; width: 450.75pt; height: 5in;" o:spid="_x0000_i1028" type="#_x0000_t75"><v:imagedata src="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image021.png" o:title=""></v:imagedata></v:shape></span><span style="font-size: 9pt;" lang="EN-US"><o:p></o:p></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font face="돋움"><span style="font-size: 9pt;" lang="EN-US"><img src="http://www.algospot.com/zbxe/files/attach/images/116/43356/9.vc++.jpg" alt="9.vc++.jpg" title="9.vc++.jpg" style="" />Visual assist</span><span style="font-size: 9pt;">는 그냥 까시면 됩니다<span lang="EN-US">. </span>가격은<span lang="EN-US"> 15</span>만원 정도 합니다<span lang="EN-US">(</span>돈 없는 <s>저 같은</s> 분들은 인터넷을 잘 뒤져봅시다 참고로 전<span lang="EN-US"> visual assist X 10.4.1619 </span>버전을 사용했습니다<span lang="EN-US">;;;)<o:p></o:p></span></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;"><font face="돋움">코딩하고 컴파일 하고<span lang="EN-US">, </span>실행 하면 아래와 같이 테스트 까지 됩니다</font><span lang="EN-US"><font face="돋움">.<br /><o:p></o:p></font></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font face="돋움"><span style="font-size: 9pt;" lang="EN-US"><v:shape id="그림_x0020_15" style="visibility: visible; width: 450.75pt; height: 123pt;" o:spid="_x0000_i1027" type="#_x0000_t75"><v:imagedata src="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image023.png" o:title=""></v:imagedata></v:shape></span><span style="font-size: 9pt;" lang="EN-US"><o:p></o:p></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;"><font face="돋움"><img src="http://www.algospot.com/zbxe/files/attach/images/116/43356/10.vc++_console.jpg" alt="10.vc++_console.jpg" title="10.vc++_console.jpg" style="" />잘 되었네요<span lang="EN-US"> (</span>당연히 이미 짜놨던 코드니까 ㅋㅋㅋ<span lang="EN-US">) </span>테스트까지 한 번에 다 해주다니<span lang="EN-US">- </span>ㅠ<span lang="EN-US">_</span>ㅠ<span lang="EN-US"><o:p></o:p></span></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;"><font face="돋움">게다가 이렇게 되면<span lang="EN-US"> VC++</span>의 디버깅을 이용할 수 있기 때문에 나중에 좀 코드가 긴 문제에서 디버깅 할 때 편리하게 사용할 수 있겠네요<span lang="EN-US"><span style="">&nbsp; </span>^^<o:p></o:p></span></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font face="돋움"><span style="font-size: 9pt;" lang="EN-US"><v:shape id="그림_x0020_18" style="visibility: visible; width: 450.75pt; height: 376.5pt;" o:spid="_x0000_i1026" type="#_x0000_t75"><v:imagedata src="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image025.png" o:title=""></v:imagedata></v:shape></span><span style="font-size: 9pt;" lang="EN-US"><o:p></o:p></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;"><font face="돋움">요기서 컴파일 하고<span lang="EN-US">, </span>서밋 합니다<span lang="EN-US">(IDE</span>에서 컴파일하고 서밋까지 되면 얼마나 좋을까요 ㅋ</font><span lang="EN-US"><font face="돋움">)<br /><o:p></o:p></font></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font face="돋움"><span style="font-size: 9pt;" lang="EN-US"><v:shape id="그림_x0020_19" style="visibility: visible; width: 245.25pt; height: 91.5pt;" o:spid="_x0000_i1025" type="#_x0000_t75"><v:imagedata src="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image027.png" o:title=""></v:imagedata></v:shape></span><span style="font-size: 9pt;" lang="EN-US"><o:p></o:p></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;"><font face="돋움"><img src="http://www.algospot.com/zbxe/files/attach/images/116/43356/11.submit.jpg" alt="11.submit.jpg" title="11.submit.jpg" style="" />잘 되었습니다<span lang="EN-US">. </span>이것으로 드디어 <s>캡춰때문에</s> 길었던<span lang="EN-US"> plugin </span>설정이 끝났습니다<span lang="EN-US">.<o:p></o:p></span></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><o:p><font face="돋움">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;"><font face="돋움">개인적으로는<span lang="EN-US"> VC++ + Visual assist </span>조합을 애용하다가 카위기 에딧으로는 뭔가 불편해서 장애인 느낌이 계속 났었는데 <span lang="EN-US">VC++</span>에서 코딩 할 수 있어서 너무 좋습니다<span lang="EN-US">.<o:p></o:p></span></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><o:p><font face="돋움">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;"><font face="돋움">단점<span lang="EN-US">: </span>한번 저장했다가 열면<span lang="EN-US">, </span>저장되었던 코드를 가져와서 테스트 코드가 없어지네요<span lang="EN-US"><o:p></o:p></span></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;"><font face="돋움">다른 설명<span lang="EN-US">: <a href="http://www.topcoder.com/wiki/display/tc/How+to+install+The+Arena+plug-ins">http://www.topcoder.com/wiki/display/tc/How+to+install+The+Arena+plug-ins</a><o:p></o:p></span></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><o:p><font face="돋움">&nbsp;</font></o:p></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><o:p><font face="돋움">덧1 : 혹시 "cannot instantiate tangentz.EntryPoint, java.lang.ClassNotFoundException: tangentz.EntryPoint" 요런&nbsp; 메시지가 보이면 다시 다운 받으면 된다고 합니다.<br /></font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><o:p><font face="돋움">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font face="돋움"><span style="font-size: 9pt;" lang="EN-US">[ </span><span style="font-size: 9pt;">부록<span lang="EN-US"> A ] : Editor Code Template<o:p></o:p></span></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;"><font face="돋움">별 건 없고<span lang="EN-US">, </span>처음에 문제 설명이 같이 있는데<span lang="EN-US">, </span>문제 설명은 빼버리거나<span lang="EN-US"> /* */ </span>주석으로 잘 감싸주시면 될 껍니다<span lang="EN-US">.<o:p></o:p></span></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><o:p><font face="돋움">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">$BEGINCUT$<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">/*<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">$PROBLEMDESC$<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">*/<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">$ENDCUT$<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#line $NEXTLINENUMBER$ "$FILENAME$"<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><o:p><font face="돋움">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#include &lt;vector&gt;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#include &lt;list&gt;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#include &lt;map&gt;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#include &lt;set&gt;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#include &lt;deque&gt;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#include &lt;stack&gt;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#include &lt;bitset&gt;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#include &lt;algorithm&gt;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#include &lt;functional&gt;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#include &lt;numeric&gt;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#include &lt;utility&gt;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#include &lt;sstream&gt;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#include &lt;iostream&gt;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#include &lt;iomanip&gt;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#include &lt;cstdio&gt;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#include &lt;cmath&gt;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#include &lt;cstdlib&gt;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#include &lt;ctime&gt;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">using namespace std;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><o:p><font face="돋움">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#define pb push_back<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#define mp make_pair<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#define sz(v) ((int)(v).size())<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#define f(i,a,b) for(int i=(a);i&lt;(b);++i)<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#define r(i,n) f(i,0,n)<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#define fe(i,a,b) for(int i=(a);i&lt;=(b);++i)<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#define re(i,n) fe(i,0,n)<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#define fsz(i,a,v) f(i,a,sz(v))<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#define rsz(i,v) r(i,sz(v))<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#define all(v) v.begin(),v.end()<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#define set(x,with) memset(x,with,sizeof(x))<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">string itoa(int i) { stringstream ss; ss&lt;&lt;i; return ss.str(); }<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#define same(a,b) (fabs((a)-(b))&lt;0.0000001)<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#define even(a) ((a)%2==0)<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">#define odd(a) ((a)%2==1)<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><o:p><font face="돋움">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">class $CLASSNAME$ { <o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">public: <o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>$RC$ $METHODNAME$($METHODPARMS$) {<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>$RC$ rr;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>return rr;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} <o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">$TESTCODE$ <o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움">}; <o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><o:p><font face="돋움">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움"><span style="">&nbsp;&nbsp;&nbsp; </span>// BEGIN CUT HERE <o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움"><span style="">&nbsp;&nbsp;&nbsp; </span>int main()<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>$CLASSNAME$ ___test; <o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>___test.run_test(-1); <o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} <o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><font face="돋움"><span style="">&nbsp;&nbsp;&nbsp; </span>// END CUT HERE <o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt;" lang="EN-US"><o:p><font face="돋움">&nbsp;</font></o:p></span></p></div>]]></description>
                        <pubDate>Tue, 25 Dec 2007 22:44:41 +0900</pubDate>
                    </item>
                <item>
            <title><![CDATA[TopCoder Arena 단축아이콘 만들기]]></title>
            <author><![CDATA[최치선]]></author>
            <link><![CDATA[http://www.algospot.com/zbxe/?document_srl=6134]]></link>
                        <description><![CDATA[<div class="xe_content">SRM을 할 때 매번 topcoder사이트에 접속해서 누르는게 불편하셨죠?<br /><br />간단하게 단축아이콘을 만드는 법을 여러분께 소개합니다.<br /><br />1. 시작 - 제어판 - Java 를 누르면 다음과 같은 화면이 뜹니다.<br /><img src="http://www.algospot.com/zbxe/files/attach/images/116/6134/a.png" alt="a.png" title="a.png" class="iePngFix" style="" /><br /><br />2. '임시 인터넷 파일' 항목의 '보기'를 누르면 다음과 같은 창이 뜹니다.<br />&nbsp;&nbsp;&nbsp; (command line에서 javaws -viewer를 입력해도 무방합니다.)<br /><img src="http://www.algospot.com/zbxe/files/attach/images/116/6134/b.png" alt="b.png" title="b.png" class="iePngFix" style="" /><br />3. 'Competition Arena'를 선택한 후 도구모음 아이콘의 '단축키 설치'를 선택하거나<br />&nbsp;&nbsp;&nbsp; 우클릭 후 '단축키 설치' 를 선택합니다.<br /><br />4. 바탕화면에 보면 단축아이콘이 생성된 것을 확인하실수 있습니다.<br /><br />그럼 다들 SRM에서 보아요 ~<br /></div>]]></description>
                        <pubDate>Tue, 27 Nov 2007 14:28:08 +0900</pubDate>
                    </item>
                <item>
            <title><![CDATA[탑코더 SRM 튜토리얼]]></title>
            <author><![CDATA[legend12]]></author>
            <link><![CDATA[http://www.algospot.com/zbxe/?document_srl=6006]]></link>
                        <description><![CDATA[<div class="xe_content"><STRONG>1. Registration</STRONG><BR />&nbsp;&nbsp; SRM (Single Round Match) 에 참가하기 위해서는 대회가 시작하기 전 Competition Arena 에 접속하여 참가등록을 하여야 한다. 참가등록시간은 대회시작 3시간전부터 5분전까지 가능하며, 단일 SRM 의 최대인원 제한 1500명이 있으므로, 시간과 총인원에 유의하여 등록을 마쳐야 한다.<BR />&nbsp; Competition Arena 에 접속하기 위해서는 탑코더 Handle 이 필요한데 이는 웹사이트(<A href="http://www.topcoder.com/tc">http://www.topcoder.com/tc</A>)에서 가입이 가능하며, 가입 후에는 화면 왼쪽 상단에 있는 "O(n)" 아이콘을 클릭하면 설치 및 접속이 가능하다. 한번 설치한 이후에는 시작프로그램에 등록하여 접속하는 방법도 가능하다.<BR /><BR /><img src="http://algospot.com/zbxe/files/attach/images/116/6006/tc.JPG" alt="tc.JPG" title="tc.JPG" style="" /><BR />* 파란색 박스로 표시되어 있는 부분이 Competition Arena 접속하는 아이콘<BR /><BR /><img src="http://algospot.com/zbxe/files/attach/images/116/6006/arena_main.PNG" alt="arena_main.PNG" title="arena_main.PNG" class="iePngFix" style="" /><BR />* 아레나에 접속하여 SRM 에 등록하는 위치<BR /><BR /><STRONG>2. Divisions</STRONG><BR />&nbsp; SRM에 등록을 하게 되면 개인의 성적에 따라서&nbsp;2개의 Divisions 한쪽에&nbsp;배정이 된다. Division 1 과 2 가 있는데, Division 1 이 상위 Division 이다. 개인은 매 SRM 성적에 따라서 Rating 이라는 자신의 현재 성적을 가늠할 수 있는 수치가 바뀌게 되는데, Rating 이 1200 미만이거나 처음 참가하는 사람들은 Division 2 에서 그 외의 사람들은 Division 1 에서 SRM 을 치루게 된다. Rating 에 대한 사항은 뒤에서 다시 자세하게 언급하도록 하겠다.<BR /><BR /><STRONG>3. Competition<BR /></STRONG>&nbsp; SRM 은 75분의 Coding Phase 와 5분의 Intermission, 15분의 Challenge Phase 그리고 그 이후의 System Test Phase 로 이루어진다. 일반적으로&nbsp;대회가 시작하는 시간으로부터 2시간 정도면 최종결과를 볼 수 있다.<BR /><BR /><STRONG>1) Coding Phase</STRONG><BR />&nbsp; 75분간 주어지는 Easy, Medium, Hard 3문제를 풀어서 제출할 수 있는 시간이다. 각각의 문제는 250, 500, 1000 점을 기본으로 해당 SRM 의 난이도에 따라서 다소 점수의 변동이 있을 수 있다. 문제를 여는 시간으로부터 점수가 점점 감소하며, submit 을 한 시점의 점수가 반영된다. Coding Phase 내에는 한번 제출한 문제를 다시 제출할 수 있는데, 이때는 시간에 따른 감점에 10%의 추가 감점이 주어진다. 모든 문제에 대해서는 총점의 30% 에 해당하는 기본점수가 주어지기 때문에 늦게 제출하거나 여러번에 걸쳐 재제출하더라도 최소한의 점수는 보장된다.<BR /><BR /><STRONG>2) Intermission</STRONG><BR />&nbsp; Coding Phase 와 Challenge Phase 사이에 주어지는 5분의 휴식시간. 사실 휴식시간이라기 보다는 자신의 소스를 다시한번 검토하고 Challenge Phase 를 대비하기 위한 case 생성시간으로 사용된다고 보는 것이 더 좋을 것이다.<BR /><BR /><STRONG>3) Challenge Phase</STRONG><BR />&nbsp; 방에 있는 다른 사람들이 제출한 코드를 보고 반례 데이터를 입력하여 틀렸음을 <STRONG><FONT color=#ee2222>15분</FONT></STRONG>간&nbsp;증명하는 시간이다. 내가 만약 남의 반례 데이터를&nbsp;넣어 틀린것을 찾아내는데 성공했다면 50점을 추가로 받으며, 실패했을 경우에는 25점을 감점으로 받는다. 이런 반례 데이터를 넣는 것을 Challenge 라고 한다. 이미 다른 사람이 반례를 찾는데 성공한 것에 대해서는 더이상 시도할 수 없으며, 자신의 점수가 음수일 때 또한 더이상 시도할 수 없다.<BR /><BR /><STRONG>4) System Test Phase</STRONG><BR />&nbsp; 제출된 해답들 중에서 Challenge Phase 에서 반례가 발견되지 않고 넘어온 모든 솔루션에 대해서 검증하는 시간이다. 이 채점은 기본적으로 출제자가 준비한 케이스들과 모든 방에서 Challenge 에 성공한 케이스들이 포함되어 채점을 한다. 이걸 통과하지 못하면 그 문제는 0점 처리되며, 통과한 문제들에 대해서만 점수가 부과된다.<BR /><BR />&nbsp; 이렇게 모든 대회가 끝나고 나면 System Test 까지 Pass 한 해답들에 대한 점수와 Challange Phase 에서 획득한(또는 잃은) 점수가 합산되어 최종 순위가 결정된다.<BR /><BR /><STRONG>4. Coding Rules</STRONG><BR />&nbsp; 탑코더의 경우에는 ICPC 와는 다르게 전체 프로그램을 만들어 제출하는 것이 아니라, 주어지는 클래스의 함수 하나를 만들어서 제출하면 된다. 추가적인 다른&nbsp;함수에 대한 제한은 없다.<BR />&nbsp;<img src="http://algospot.com/zbxe/files/attach/images/116/6006/prob.PNG" alt="prob.PNG" title="prob.PNG" class="iePngFix" style="" /><BR />위의 문제에서 보면 TristipteBacteria 라는 Class 안에 int 를 return 으로 하고 String[] 를 인자로 하는 howMany 라는 함수가 필수로 포함되어 있어야 한다는 것을 알 수 있다. ICPC 에서 하듯이&nbsp;main 함수를 만들어서 넣고 Compile 을 할 경우 Error 가 발생하니 주의가 필요하다.<BR /><img src="http://algospot.com/zbxe/files/attach/images/116/6006/arena.PNG" alt="arena.PNG" title="arena.PNG" class="iePngFix" style="" /><BR />이제 코딩한 내용을 Coding Area 에 놓고 하단에 위치한 Compile 버튼을 누르면 컴파일을 할 수 있다. 팝업창을 통해 Error 위치 또는 컴파일 완료라는 메시지 창이 뜨게 되고, Test 버튼을 눌러서 프로그램을 검증해 볼 수 있다. 기본적으로 예제 데이터들은 입력되어 있으며, 직접 데이터를 입력하여 test 해 볼 수 있다. 이제 틀린것이 없다고 생각되면 가장 우측에 위치한 Submit 버튼을 눌러서 솔루션을 제출할 수 있다. 솔루션이 제출될때 UCR 에 관련된 경고창이 뜰 수 있으며, 제출이 확인되면 문제에 대한 현재 점수가 팝업창을 통해서 나타난다.<BR /><BR /><STRONG>* UCR (Unused Code Rules)</STRONG><BR />&nbsp; 제출된 코드 중 실제로 동작하지 않는 Code 가 30% 이상 포함되어 있을 경우를 말하며, 이 경우에는 획득한 점수의 20% 만이 부여된다. System test 후에 걸러지므로 실제 스탠딩에서는 확인할 수 없다. 좀 더 세부적인 사항은 링크(<A href="http://www.topcoder.com/tc?module=Static&amp;d1=help&amp;d2=ratedEvent#extracoderule">http://www.topcoder.com/tc?module=Static&amp;d1=help&amp;d2=ratedEvent#extracoderule</A>)를 참조.<BR /><BR /><STRONG>5. Advanced Skills</STRONG><BR />&nbsp; 많은 참가자들은 문제를 푸는데 소용되는 시간을 좀 더 줄이고, 좀 더 자신에게 편리한 방향으로 SRM 에 참가하기 위하여 나름의 노하우를 쌓아서 참가하고는 한다. 이런 것들을 반영하는 것이 Template code 와 Arena plug-in 이 되겠다.<BR /><BR /><STRONG>1) Templates</STRONG><BR />&nbsp; typedef 라 define 을 통해서 자신이 자주사용하는 명령어들을 짧게 재정의 하여 사용하거나, 문제에서 필요할 것이라고 예측되는 함수들을 미리 구현하여 놓고, 대회가 시작하면 붙여넣어 사용하는 코드들을 말한다. 이런 코드들은 전체적인 코딩시간을 줄여줄 뿐만 아니라 미리 검증을 통해 구현하기 때문에 디버그시에 디버그의 범위를 제한시켜 준다는 장점을 가진다. 하지만 문제에서 사용되지 않는 코드들을 붙여넣을 경우 UCR 에 걸릴 수 있기 때문에 조심해서 사용해야 한다.<BR />[code c++]<BR />#define pb&nbsp;push_back<BR />#define FOR(i, a, b) for(int i = (a); i &lt; (b); ++i)<BR />typedef long long ll;<BR />typedef vector&lt;int&gt; VI;<BR />int ccw(point pa, point pb, point pc)&nbsp;{<BR />&nbsp;&nbsp;&nbsp; return (pa.x - pb.x) * (pb.y - pc.y) - (pb.x - pc.x) * (pa.y - pb.y); <BR />} <BR />[/code]<BR />* 많이 사용되는 template 의 형태<BR /><BR /><STRONG>2) Plug-ins</STRONG><BR />&nbsp; <A href="http://algospot.com/zbxe/openlecture/43356">http://algospot.com/zbxe/openlecture/43356</A><BR /><BR /><STRONG>6. Rating &amp;&nbsp;Volatility<BR /></STRONG>&nbsp; 레이팅에 따라서 핸들의 색이 달라지게 된다.&nbsp;<BR />&nbsp; <STRONG><FONT color=#999999>Gray : 0 - 899</FONT></STRONG> &nbsp;/&nbsp; <FONT color=#22aa22><STRONG>Green : 900 - 1199</STRONG></FONT>&nbsp; /&nbsp; <FONT color=#2222ee><STRONG>Blue : 1200 - 1499</STRONG></FONT>&nbsp; /&nbsp; <FONT color=#eeee44><STRONG>Yellow : 1500 - 2199</STRONG></FONT>&nbsp; /&nbsp; <FONT color=#ee2222><STRONG>Red : 2200+</STRONG></FONT><BR />&nbsp; 이 외에 레이팅이 3000+ 인 경우에는 타겟이라고 불리는 괴물 집단이 존재한다. 이 경우 핸들의 색이 변하지는 않으나 Arena 에서 핸들 앞에 나타나는 원의 형태가 다르다.<BR />&nbsp;<img src="http://algospot.com/zbxe/files/attach/images/116/6006/target.PNG" alt="target.PNG" title="target.PNG" class="iePngFix" style="" /><BR />&nbsp;* 잘 알려져 있는 Target 둘이다.<BR />&nbsp; 레이팅은 매 SRM 이 끝나면 변하게 되는데 이는 영향이 받는 변수가 많으니 자세한 설명은 생략한다. 꼭 계산을 해보고 싶다면 <A href="http://www.topcoder.com/tc?module=Static&amp;d1=help&amp;d2=ratings">http://www.topcoder.com/tc?module=Static&amp;d1=help&amp;d2=ratings</A>&nbsp;이 곳을 참고하면 된다.<BR />&nbsp; Volatility 는 자신의 변동성지수를 나타낸다. 수치가 클수록 레이팅의 변동폭이 크며, 작을수록 변동폭이 작다.<BR /><STRONG><BR />7. Money Match</STRONG><BR />&nbsp; SRM 중에 일부는 스폰서를 통해서 상금이 걸린 경우가 있다. 이를 Money Match 라고 하는데 일반적으로 총 상금은 $5,000 이며, Division 1 에서는 방 1~3등이 Division 2 에서는 방 1~2등이 상금을 받는다. 분배방식은 총 상금의 70% 가 Division 1 에 30% 가 Division 2 에 할당되며, 이 할당랼들은 방의 갯수에 따라 동일하게&nbsp;방별로 상금이 나뉜다. Division 1 의 방 1등은&nbsp;50% 를&nbsp;2등은 30%, 3등은 20% 를 받으며, Division 2 의 방 1등은 할당량의 60%, 2등은 40% 를 받게 된다.<BR /><BR /><STRONG>8. Affidavit</STRONG><BR />&nbsp; 상금을 받기 위해서는 공증작업을 거쳐야 하는데, 이것은 공증서류를 준비하여 미국 대사관에 가면 수수료를 내고 받을 수 있다. 공증을 받기위해서는 Topcoder 가 미국기업임을 증명할 수 있어야 하므로 웹사이트에 있는 미국내&nbsp;주소를 꼭 알아가도록 하자. 대사관에서 공증을 받은 후에는 이것을 탑코더에 국제우편을 보내면 끝.<BR /><BR /></div>]]></description>
                        <pubDate>Thu, 22 Nov 2007 16:27:02 +0900</pubDate>
                    </item>
                <item>
            <title><![CDATA[TopCoder에서 상금 받기 - W-8BEN 작성하기]]></title>
            <author><![CDATA[Toivoa]]></author>
            <link><![CDATA[http://www.algospot.com/zbxe/?document_srl=1822]]></link>
                        <description><![CDATA[<div class="xe_content"><p>상금을 받기 위해서는 Affidavit을 출력해서 미 대사관에서 공증받은 후에 <br /><br />W-8BEN 문서를 작성해서 우편으로 공증받은 Affidavit 문서와 함께 TopCoder로 보내면 됩니다.<br /><br />W-8BEN 작성에 대해서는 첨부한 PDF 파일을 참조하시면 됩니다.</p></div>]]></description>
                        <pubDate>Tue, 09 Oct 2007 21:45:40 +0900</pubDate>
                    </item>
                <item>
            <title><![CDATA[Ternary Search 튜토리얼]]></title>
            <author><![CDATA[JM]]></author>
            <link><![CDATA[http://www.algospot.com/zbxe/?document_srl=618]]></link>
                        <description><![CDATA[<div class="xe_content">옛날에 후배들을 위해 작성한 글인 관계로 경어체가 아니네요. 양해 부탁드립니다~ ^^<br /><br /><br /><br />TernarySearch (터너리 서치라고 읽는다) 는, BinarySearch 와 비슷한 검색 알고리즘이다. 사실 BinarySearch 는 
정렬된 상태의, 임의 접근이 가능한 수열에서 원소를 찾아내기 위한 알고리즘으로 많이 일컬어지기 때문에, 정확하게는 BisectionMethod 
와 비슷한 검색 기법이라고 할 수 있다. <br /><br /><b>기본 개념</b> <br />TernarySearch 는 어떤 연속적인 unimodal function `f(x)` 의 최대값, 혹은 최소값 
(`최적해` 라고 한다) 을 찾는 것을 목표로 한다. 여기서는 최대값을 갖는 함수의 최대값을 찾는 것만을 대상으로 해 이야기하자. 만약 최소값을 
갖는 함수의 최소값을 찾고 싶다면, 정확히 반대로 하면 된다. <br /><br />unimodal 함수란 한 개의 지역 극대점만을 갖는 함수를 의미한다. 쉽게 이해하자면, 극대점에 이르기까지는 단조 증가하고, 그 후부터는 단조 
감소하는 함수를 의미한다. 예를 들면 다음과 같이 생긴 함수를 들 수 있다. <br /><br /><img src="http://www.algospot.com/zbxe/files/attach/images/116/618/unimodal_function.png" alt="unimodal_function.png" title="unimodal_function.png" class="iePngFix" style="" /><br /><br /><br />단, 다음과 같은 제약이 있다. <br />* 수직선이나 수평선은 있을 수 없다: 수직선은 함수의 정의에 어긋나므로 안 되고, 수평선은 단조 
증가/단조 감소라는 조건에 어긋나므로 안 된다. <br /><br /><img src="http://www.algospot.com/zbxe/files/attach/images/116/618/not_unimodal_horizontal_line.png" alt="not_unimodal_horizontal_line.png" title="not_unimodal_horizontal_line.png" class="iePngFix" style="" /><br /><br />* 지역 극대는 하나만 있어야 한다. 이런 지역 극대를 피크(peak) 라고 부르는데, peak 는 양쪽 옆의 점이 모두 자기 자신보다 작아야 
한다. <br /><br /><img src="http://www.algospot.com/zbxe/files/attach/images/116/618/not_unimodal_two_peaks.png" alt="not_unimodal_two_peaks.png" title="not_unimodal_two_peaks.png" class="iePngFix" style="" /><br /><span style="font-style: italic;">(주: 위 그림에 오타가 있습니다: 지역 극소가 아니라 극대라고 해야 하지요 ^^;;;)</span><br /><br />이런 함수의 최적해를 구하는 것은 LocalSearch 로도 가능할 거라고 생각하겠지만, TernarySearch 는 전체 탐색 범위가 한번에 
2/3 으로 줄어들기 때문에 로컬 서치보다 훨씬 빨리 수렴하고, 함수가 수렴했음을 판단하는 것도 간단한 편이다. <br /><br /><b>접근 
방법</b> <br />TernarySearch 는 답의 범위 안에서 해당 함수가 unimodal 임을 루프불변조건으로 유지하며, 종료 조건이 
만족될 때까지 루프를 반복하며 답의 범위 `[left, right]` 를 줄여간다. 루프의 각 iteration 에서, 두 개의 값 `a = 
(left*2 + right) / 3` 과 `b = (left + right*2) / 3` 에서의 함수 값을 샘플링한다. <br /><br /><img src="http://www.algospot.com/zbxe/files/attach/images/116/618/ternary_iteration.png" alt="ternary_iteration.png" title="ternary_iteration.png" class="iePngFix" style="" /><br /><br />이때, f(a) 와 f(b) 에 대한 값을 비교하자.<br /><br />a. 만약 f(a) &lt; f(b) 라면 (그림과 같이)<br />* 주어진 함수는 unimodal 이므로 f(a) &lt; f(b) 인 경우, [left, a] 구간 안에 f(b) 보다 큰 값이 없음은 자명하다.<br />* 그러므로, left = a 를 도입하여 구간을 2/3 으로 줄일 수 있다.<br />b. 만약 f(a) &gt; f(b) 라면<br />* 주어진 함수는 unimodal 이므로 f(a) &gt; f(b) 인 경우, [b, right] 구간 안에 f(a) 보다 큰 값이 없음은 자명하다.<br />* 그러므로, right = b 를 도입하여 구간을 2/3 으로 줄일 수 있다.<br /><br />[left,right] 범위가 충분히 작아질 때까지 이를 반복하여 답을 찾는다. <br /><b><br />샘플 코드</b> <br /><ol><li class="li1"><span class="de1"><span class="co1">// [min,max] 구간에서 f(x) 가 최대인 x를 
찾는다.</span></span> 
</li><li class="li1"><span class="de1">&nbsp;</span> 
</li><li class="li1"><span class="de1"><span class="kw4">double</span> ternary<span class="br0">(</span><span class="kw4">double</span> <span class="kw3">min</span>, 
<span class="kw4">double</span> <span class="kw3">max</span>, Function&amp; f<span class="br0">)</span></span> 
</li><li class="li1"><span class="de1"><span class="br0">{</span></span> 
</li><li class="li1"><span class="de1">&nbsp; <span class="kw1">while</span><span class="br0">(</span><span class="kw3">max</span> - <span class="kw3">min</span> &gt; 
<span class="kw3">max</span> * 1e<span class="nu0">-9</span><span class="br0">)</span></span> 
</li><li class="li1"><span class="de1">&nbsp; <span class="br0">{</span></span> 
</li><li class="li1"><span class="de1">&nbsp; &nbsp; <span class="kw4">double</span> a = <span class="br0">(</span><span class="kw3">min</span>*<span class="nu0">2</span> + <span class="kw3">max</span><span class="br0">)</span> / <span class="nu0">3.0</span>;</span> 
</li><li class="li1"><span class="de1">&nbsp; &nbsp; <span class="kw4">double</span> b = <span class="br0">(</span><span class="kw3">min</span> + <span class="kw3">max</span>*<span class="nu0">2</span><span class="br0">)</span> / <span class="nu0">3.0</span>;</span> 
</li><li class="li1"><span class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">(</span>f<span class="br0">(</span>a<span class="br0">)</span> &lt; f<span class="br0">(</span>b<span class="br0">)</span><span class="br0">)</span></span> 
</li><li class="li1"><span class="de1">&nbsp; &nbsp; &nbsp; <span class="kw3">min</span> = a;</span> 
</li><li class="li1"><span class="de1">&nbsp; &nbsp; <span class="kw1">else</span></span> 
</li><li class="li1"><span class="de1">&nbsp; &nbsp; &nbsp; <span class="kw3">max</span> = b;</span> 
</li><li class="li1"><span class="de1">&nbsp; <span class="br0">}</span></span> 
</li><li class="li1"><span class="de1">&nbsp; <span class="kw1">return</span> <span class="br0">(</span><span class="kw3">min</span>+<span class="kw3">max</span><span class="br0">)</span>*.<span class="nu0">5</span>;</span> 
</li><li class="li1"><span class="de1"><span class="br0">}</span></span></li></ol><br /><b>유의할 점</b> <br />위 예제 코드에서, 종료 조건이 max - min &gt; 1e-9 가 아니라 max - min &gt; 
max * 1e-9 인 것을 유의해서 보라. 예를 들어 `max = 1e50, min = 1e40` 이라고 하자. 종료조건을 max - 
min &gt; 1e-9 로 하면 어떻게 될까? 숫자가 워낙 크기 때문에 실수연산의 오차로 아무리 반복해도 1e-9 이하로 차이가 줄어들지 
않는 경우가 있는 경우가 생긴다. 그러므로, 이와 같은 경우에는 상대적인 크기로 종료 조건을 설정해 주면 된다. <br /><br />이외에, 한번의 
TernarySearch 로 프로그램이 종료되는 경우 그냥 무조건 200번 정도 루프를 반복해 주는 것도 좋은 방법이다. `(2/3)^200 
&gt; 1e-32` 이기 때문에, 200번 정도 루프를 돌고 나면 double 실수 범위 내에서 반드시 수렴하기 때문이다.<br /></div>]]></description>
                        <pubDate>Wed, 26 Sep 2007 02:58:39 +0900</pubDate>
                    </item>
            </channel>
</rss>
