지난 2월 1 - 5일, 중국에서 ICPC 세계 결선이 열렸다.
조금 지난 뉴스이기는 하지만. 기록을 위해서 남겨둔다.
www.acm.org 의 공식 뉴스 릴리즈를 번역해 보았다.


Chinese, Russian teams take top spots
중국과 러시아 팀이 상위권을 차지

Students from Shanghai Jiaotong University have been named the 2010 ACM International Collegiate Programming Contest (ICPC) World Champions. Moscow State University, National Taiwan University, and Taras Shevchenko Kiev National University followed in the second, third and fourth ranked positions, with all four teams being honored with Gold status recognition. 

상해교통대 학생들이 2010 ACM International Collegiate Programming Contest (ICPC; 세계대학생 프로그래밍 경시대회) 에서 세계챔피언이 되었다. 모스크바 주립 대학, 대만국립대, Taras Schevchenko 키에프 국립 대학이 그 뒤를 이었으며, 이상 네 팀이 금메달을 수여받았다.

                                                                     우승 : Shanghai Jiaotong University.
 

The competition, sponsored by IBM, took place February 1 to 6 at Harbin Engineering University in Harbin, China. 

IBM 이 후원하는 이 대회는 2월 1일부터 6일까지 중국 하얼빈 공대에서 개최되었다.

Referred to as "The Battle of the Brains," the ACM ICPC World Finals challenged the world's top 103 university teams to use open standard technology in designing software that solves real-world problems. Each team of three students faced 11 problems of varying levels of difficulty. The contest problems were modeled after real-world issues such as developing programs which will predict where rain water from tsunamis and hurricanes will accumulate. In five short hours, students solved more than a semester's worth of computer programming material. 

"두뇌의 전투" 로 불리는 ACM ICPC 세계 결선은 전세계 103 개 대학의 팀이 실 세계와 관련된 문제를 해결하는 능력을 겨루었다. 3명의 학생으로 구성된 각 팀은 다양한 난이도의 11개 문제를 풀어야 한다. 대회에 출제된 문제는 실 세계에서 벌어진 이슈들과 관련된 문제 - 예를 들면 쓰나미와 허리케인의 강우량을 예측하는 문제 - 들을 푼다. 5 시간의 짧은 대회 시간 동안 학생들은 학기중에서 배운 컴퓨터 프로그래밍 교재에 나오는 것 이상의 문제를 해결해야 한다.

Learn more about the 2010 ACM ICPC and all of the team rankings.

- Official Final Standing

파란색은 한국인 학생이 포함된 팀.
붉은색은 한국팀.

저작자 표시 비영리 변경 금지
이올린에 북마크하기(0) 이올린에 추천하기(0)
http://soyoja.com/trackback/362 관련글 쓰기
댓글을 달아주세요!
  1. BlogIcon hyperdash 2010/03/07 23:34  댓글주소  수정/삭제  댓글쓰기

    숭실대는???? 숭실대는 없는거야?

이름 암호 홈페이지



11월 13일 미국 캘리포니아 구글 본사에서 구글이 주최하는 프로그래밍 대회, Google Code Jam 2009 의 결승전이 열렸다. 전세계 각지에서 온라인 예선을 거친 최종 25 명의 Finalist 들이 참가하여 4 시간동안 진행되었다.


Announcing the winner of Google Code Jam 2009

Announcing the winner and champion of Google Code Jam 2009: China's Lou TianCheng, *ACRush*!  He takes home $5,000 and the title of Code Jam champion!

In second place came China's Qi ZiChao (*qizichao*); and our third-place finisher was Japan's Iwata Yoichi (*wata*).


ACRush (칭화대 3학년) 는 2008 년 대회에 이어 2009 년 GCJ 까지 2 년 연속 우승이다.
올해 ACM-ICPC 세계 결선에서 2 등에 그친 한을 여기서 푸는가 -_-;
문제는 결승전 스코어. 2위에 비해 거의 더블 스코어로 완전히 Dominate 한 모습을 보여줬다. ㄷㄷㄷ

사용자 삽입 이미지
GCJ 2009 결승전 Score Board.  작년( 3시간동안 5 문제 ) 과 달리 4시간동안 6 문제를 푸는 것으로 대회가 확장되었다.
 "May the best coder Win" 이란 문구가 인상적...

Google Code Jam 2009 문제 보러가기


ps ) 올해 GCJ 2009 에 한국인 출전자는 한명도 없었다. 결선 T/O 가 25 명 ( 작년 대비 1/4 로 줄었음 ) 뿐이라서 정말 바늘구멍이었는 듯...

이올린에 북마크하기(0) 이올린에 추천하기(0)
http://soyoja.com/trackback/345 관련글 쓰기
댓글을 달아주세요!
  1. BlogIcon Hyperdash 2009/11/17 13:15  댓글주소  수정/삭제  댓글쓰기

    헛.. 짱골라가 1, 2위를 차지하다니...

이름 암호 홈페이지





제 9회 대학생 프로그래밍 경시대회와 함께 열린, 2009 ACM-ICPC Asia Regional Contest - Seoul 대회 결과가 나왔다.
 
출처 : http://acm.kaist.ac.kr





Result


Rank School Team Solved Time
1 KAIST Nondeterminist 9 1547
2 Seoul National University rand() 9 1696
2 KAIST RoyalRoader 8 739
3 Hong Kong University of Science and Technology HKUST_Optimus Prime 7 688
3 Seoul National University srand() 7 1193
4 Pohang University of Science and Technology POSCAT@POSTECH 7 1280
5 Jilin University rejojer 7 1284
6 National Taiwan University ilphuber 6 759
6 Seoul National University Billy Herrington 6 992
7 Sogang University SNSD 6 1015
8 Soongsil University SCCC.BM 5 885
9 Chiao Tung University Tsukamoto Yakumo 5 1015
9 Seoul National University juliette 4 376
9 KAIST PS06 4 610
9 KAIST Lollipop 4 740
9 Soongsil University Olleh 4 859
10 KAIST Mark_1_17 3 182
10 Pohang University of Science and Technology JBPark@POSTECH 3 205
10 Pohang University of Science and Technology NEWBIE@POSTECH 3 326
10 KAIST Strawberry Season 3 3 372
10 Pohang University of Science and Technology java@POSTECH 3 439
10 Korea University Yuna_Kim 3 479
10 Korea University DaTulRae 3 485
11 Chonbuk National University AL++ 3 493
11 KAIST PS07 3 545
12 Kwangwoon University No-Name 3 567
12 Soongsil University SCCC.ssu.ac.kr 3 607
13 Kyung Pook National University Effective ACM 3 639
14 Inha University I Sell Fish 3 703
14 Soongsil University Beauty & Beast 3 801




Honorable Mentions


School Team
Ajou University ansi://5+5+5=550/
Ajou University ansi://newb_newb/
Andong National University A.C.E
Chonbuk National University CNP
Chonnam National University minganin
Chosun University HotIssue @ CAC
City University of Hong Kong Apprentices
Dong-A University 5duckhoo
Dongguk University DNA
Ewha Womans University QWERTY
Hankuk University of Foreign Studies Over3P
Hanyang University Border of Accepted
Hanyang University Hyking
Hanyang University HYUman
Hanyang University Project A.
Hanyang University SKIP
Inha University autoinput
Inha University YesMan
KAIST BlueAngel
KAIST CodingLikeAPoet
KAIST PS11
Kongju National University Defacto
Kookmin University DAE_IN_BAE
Kookmin University KimJungKim
Kookmin University SO_IN_BAE
Korea University of Technology and Education KUTP'S
Kumoh National Institue of Technology Algo-10-Da
Kyonggi University IntMasters
Kyung Hee University Password 902
Pusan National University BOO
Pusan National University EastGuard
Pusan National University Gogosing
Pusan National University Ground Homerun
Pusan National University PNU6514
Sejong University Throw Up
Seoul National University gg
Seoul National University Strong Baby
Sogang University Johannes Krauser II
Sogang University lychee
Soongsil University rw+
SungKyunKwan University SSEITS
The Catholic University of Korea Circle of Healing
University of Seoul HamnEgg
Yonsei University Decade
Yonsei University We don't major in CS



제 9회 대학생 프로그래밍 경시대회 수상 결과 ( 출처  : algospot.com )

NHN 특별상

KAIST -  Royal Roader

서울대 - srand()


동상

전북대 - AL++

인하대 - I Sell Fish

경북대 - Effective ACM

광운대 - No-Name


은상

고려대 - Yuna_Kim

서강대 - SNSD

숭실대 - SCCC.BM


금상

포항공대 - POSCAT@POSTECH

서울대 - rand()


대상

KAIST - Nondeterminist!



2003 년 이후 우승을 못하던 KAIST 가 6 년만에 다시 우승을 차지하면서, 서울대의 최근 3 년 연속우승에 종지부를 찍었다. 개인적으로는 Royal Roader 를 우승후보로 꼽았었는데. 4 시간이 지날때까지 Royal Roader가 1위를 차지하다가 막판에 순위가 뒤집혀버렸다. ㅋ

대회 수준은 꾸준히 향상되고 있고 참가팀들의 수준도 점점 상향평준화되는 느낌이지만, 서울대와 KAIST 의 아성은 여전히 굳건하다... ICPC 서울대회 10년간 2005년에 중국팀이 한번 우승한 것 빼고는 저 두 학교가 번갈아가며 우승을 해 왓는데, 이게 언제까지 이어질지 관심사다. 그나저나 올해는 넥슨이 스폰서에서 빠지면서 수상팀도 줄었다. 스폰서쉽이 더 늘어나야 할 판에 줄어들다니... 이것도 경제위기의 여파인가.

링크

2009 ACM ICPC KAIST 1등
ACM-ICPC 참가후기 (이현섭 작성)
제 9회 대학생 프로그래밍 경시대회 은상







이올린에 북마크하기(0) 이올린에 추천하기(0)
http://soyoja.com/trackback/343 관련글 쓰기
  1. 2009 ACM-ICPC Asia Regional Seoul Site 후기 (대학생프로그래밍경시대회)

    FROM 당신을 위한 최고의 감탄사 섭!! 2009/11/20 02:36  삭제

    기다리고 기다리던 서울대회를 무사히 마쳤다. 걱정도 많았고 고비도 많았던 이번 팀워크와 학교 대표라는 부담감 때문에 좋은 성적을 거둘 수 있을까 고민했지만. 그래도 괜찮은 성적을 거두어서 다행이다. 목표는 달성하지 못했지만... 실력대로 나온 순위인것 같다. 가장 아쉬운건 이번 대회에서 넥슨이 스폰서에서 빠졌다. 이유가 뭘까.. 기대했던 것보다 대회에 실망이 큰 것일까? 회사 사정이 좋지 않아 여유가 없던걸까.. NHN에서도 기념품이 좀 적어지고,..

댓글을 달아주세요!
  1. winner 2009/11/10 11:29  댓글주소  수정/삭제  댓글쓰기

    올해 대회문제 수준이 어떤 것 같으신가요?
    솔직히 저는 인터넷 예선의 문제와 결과를 보고 오히려 전체 수준은 떨어진게 아닌가 싶었습니다.
    최근 몇년간 상향평준화되어가고 있다는 것은 동의하지만 올해는 예외가 아닐런지...

  2. winner 2009/11/10 11:30  댓글주소  수정/삭제  댓글쓰기

    아... 인터넷예선에 대한 제 생각이고, 실제 본선의 문제는 안 봤습니다.
    그런데 Chiao Tung 대학이 뭐하는 대학인가 찾아보다가 들어왔습니다.
    팀이름이 좀 놀랍더라고요.

  3. BlogIcon soyoja 2009/11/10 13:04  댓글주소  수정/삭제  댓글쓰기

    작년보다는 어렵다는 것이 중계하던 분들의 공통된 의견이었습니다.
    작년에 만점팀이 나오는 바람에 올해는 작년보다 어렵게 문제가 나올 것이라는 것은 충분히 짐작할 수 있던 사항이었져...
    출제위원 분들은 올해 정도의 난이도와, 올해 정도의 결과에 매우 만족했다고 합니다. - 만점팀이 나오지 않되, 모든 문제가 풀렸고, 모든 팀들이 1 문제 이상은 풀었습니다. 수상팀들을 배정하기에도 적당 ( 모든 수상팀이 3 문제 이상 풀었져.. 2문제를 HM 로 끊기 딱 좋았음 ) 한 결과라서 앞으로도 이런 경향으로 가지 않을까 싶네요.

  4. BlogIcon hyperdash 2009/11/13 00:12  댓글주소  수정/삭제  댓글쓰기

    숭실대가 곳곳에 보이는군.... ㅎㅎㅎ

    넥슨 요새 매출이 줄어든 모양이군...

이름 암호 홈페이지


얼마전 에서 국내 Online Judge 가 별로 없다고 한탄하는 글을 썼지만...
최근에 우연히 알게 된 국내 Online Judge 2개...

http://www.dovelet.com 

디자인이나 구성이 개인 사이트틱 하지만 문제 분류등은 상당히 잘 되어 있고 난이도 별로 문제가 배치되어 매우 교육적인 느낌이 풀풀 풍기는 사이트. 전체적으로 USACO 를 많이 참고하여 제작한 듯.
문제들이 모두 한글로 되어 있어서 KOI 준비하는 학생들에게 상당히 좋아 보임.
문제별 카테고리를 나누어 놓고 이를 총 30 단계로 분류하고 중간마다 알고리즘 튜토리얼 문서가 있는 형식은 USACO 와 매우 유사.
전체적으로 쉬운 문제들이 많아 보이기는 하지만... 수록된 문제 갯수도 수백문제는 되어 보인다.
제출 시 각 테스트테이스별 성공 여부를 보여주고 실패한 테스트 케이스를 보여주는 방식 역시 USACO 와 동일.
C/C++/Java 지원

http://hello-world.co.kr

이 사이트의 장점은 다른 Online Judge 에서 볼수 없는 풍부한 언어지원.
C/C++/Java/Pyhon/C#/PHP/Perl/Visual Basic 까지 지원된다!
특히 기존의 다른 Online judge 에서 구할 수 없었던 ICPC 서울 대회의 온라인 예선 문제가 여럿 수록되어 있어서 좋았다.
( 안타깝게도 예선 문제들 중에서도 비교적 쉽고 해법이 잘 알려진 문제들만 있다. 운영자가 자기가 풀어본 문제만 올린 것일지도...  -0-;; )
수록된 전체 문제 숫자가 이 글을 쓰는 현재 54 문제밖에 안될 정도로 너무 적고, 최근에 사이트 업데이트가 잘 안되고 있다는 점이 단점.

이올린에 북마크하기(0) 이올린에 추천하기(0)
http://soyoja.com/trackback/332 관련글 쓰기
댓글을 달아주세요!
  1. BlogIcon 이규호 2009/10/09 00:11  댓글주소  수정/삭제  댓글쓰기

    dovelet 운영자 입니다.

    아직 허접한 사이트를 이렇게 좋은 평을 해 주셔서 감사합니다 :-)
    더 열심히 하라는 이야기로 알겠습니다.

    • BlogIcon soyoja 2009/10/12 11:23  댓글주소  수정/삭제

      제 맘대로 써놓은 평인데... 불쾌하게 생각하지 않고 너그럽게 봐 주셔서 감사합니다. 좋은 사이트 만들어 주셔서 늘 고맙게 생각하고 있습니다.

이름 암호 홈페이지



알고리즘 수업시간에 소개받은 문제.

어딘가에서 한번 들어본 적은 있긴 한데... 수업시간에 다시 배우니 아주 새롭다.

1975 년 Steve Selvin 이라는 수학자가 처음 소개한 이래 학자들 사이에서 한동안 많은 논란이 일었던 파라독스 문제라 한다.

문제는 다음과 같다.
당신은 어느 게임쇼에 참가하였다. 이 게임쇼에서는 3 개의 방이 있고 각각의 방 뒤에 임의의 2 곳에는 염소가 있고 나머지 한 곳에는 자동차가 있다. 참가자는 이중 어느 한 방을 선택해서 열어볼 수 있다. 게임쇼의 룰에서는 참가자가 자동차가 있는 문을 선택해서 연다면 이 자동차를 상품으로 받을 수 있고, 염소가 있는 방을 선택해서 연다면 "꽝" 이 된다. 당신이 어떤 방을 열지 결정한 상태에서, 사회자가 당신이 선택하지 않은, 염소가 있는 어느 한 방을 열어서 보여 주면서 당신이 결정한 방을 바꿀 수 있는 기회를 준다고 하자. 이때 처음의 결정을 번복하고 다른 방을 선택하는 것이 좋을까? 아니면 그냥 처음 결정했던 방을 그대로 선택하는 것이 좋을까?


"Suppose you're on a game show, and you're given the choice of three doors: Behind one door is a car; behind the others, goats. You pick a door, say No. 1, and the host, who knows what's behind the doors, opens another door, say No. 3, which has a goat. He then says to you, "Do you want to pick door No. 2?" Is it to your advantage to switch your choice?"

사용자 삽입 이미지


얼핏 생각할 때는 선택을 번복하던 번복하지 않던 별 차이가 없어 보인다. 그래서 이 문제가 소개된 이후 한동안 학자들 사이에서도 논란이 있었단다...
.
.
.
.
.
.
.
.
.
.










답은, 선택을 바꾸어서 다른 방을 열어보는 것이 66% 의 확률로 자동차가 있는 방을 선택할 수 있다.  그 이유는 아래와 같다.

참가자는 1, 2, 3 번과 같이 방을 선택할 수 있다. ( 이 경우 차를 선택할 확률은 33% ) 그가 자신의 결정을 번복하지 않는 다면 어쨌든 차를 선택할 확률은 33.3% 가 될 것이다.

그런데 결정을 번복하는 경우는 아래와 같이 된다.
사용자 삽입 이미지
 그림 출처 : Wikipedia


위 그림은 참가자가 처음에 어느 방을 선택했는데, 게임 쇼 진행자가 염소가 있는 방을 보여주었을 때, 선택한 방을 바꾼 경우를 설명하고 있다. 1 번과 같이 처음부터 차가 있는 방을 선택했다면, 선택을 바꿀 경우에는 차를 얻을 수 없다. 반면에 2 와 3 처럼 처음에 염소가 있는 방을 선택했다면, 선택을 바꿀 경우 차를 얻을 수 있다. 결국 선택을 바꿀 경우에는 위의 그림처럼 차를 얻을 확률이 2/3 = 66.6% 가 된다.

교수님의 설명은, 게임 쇼 진행자가 염소가 있는 방을 보여주고, 참가자가 이 것을 본 상태에서 자신의 결정을 번복한 것은 결국 참가자가 방을 두 번 선택한 것과 같은 효과가 있다고 볼 수 있다는 것이다. 그러므로 이 경우 확률은 2/3 이 되는 것이다.


ps ) 이번 학기에 수강중인 "알고리즘 분석" 이란 과목이 있는데... 이제 2 번 들었을 뿐 이지만 아주 대만족이다. 금년에 새로 부임하신
교수님 수업인데...  매 수업시간마다 알고리즘으로 해결 가능한 문제들도 많이 소개를 해 주시고, 각 알고리즘에 대한 증명과 문제점들에 대해서 생각해 보는 시간을 가지면서 명쾌하게 진행하신다. 수강인원도 단 3 명 뿐이라서 거의 개인과외 수준으로 배우는 느낌이다 ㅋㅋ


http://en.wikipedia.org/wiki/Monty_Hall_problem
이올린에 북마크하기(0) 이올린에 추천하기(0)
http://soyoja.com/trackback/331 관련글 쓰기
댓글을 달아주세요!
  1. 2009/09/15 23:32  댓글주소  수정/삭제  댓글쓰기

    비밀댓글 입니다

  2. 고글 2009/09/15 23:50  댓글주소  수정/삭제  댓글쓰기

    영화 21에서도 나왔던 문제~

  3. 2009/09/16 00:13  댓글주소  수정/삭제  댓글쓰기

    요즘 한요섭교수님 오토메타듣는데 수업 재밌네요 :) 근데 막 오셨으니 학기 후반부에 소위 빡-_-세지 않을까 무서워하고 있습니다 헤헤[...]

  4. BlogIcon hyperdash 2009/09/17 17:07  댓글주소  수정/삭제  댓글쓰기

    그림으로 보니까 명쾌하구나... 예전에 글로 봤었을 때는 잘 이해가 안되었었는데

    걍 이해가 팍팍 되네~

이름 암호 홈페이지



웹 서핑 중에 우연히 일본의 Online Judge 를 찾았다.


http://rose.u-aizu.ac.jp/onlinejudge/  Aizu Online Judge

꽤 오래전부터 운영되던 것 같은데... 일본의 Online Judge 를 직접 눈으로 확인한 것은 처음이다.  아이즈 (會津) 대학에서 운영하는 것 같다. 아이즈 대학은 WF 에도 나간 바 있고 최근에 일본대회에서의 성적이 매우 좋다는 생각을 하고 있었는데 역시 그럴만한 이유가 있었군... 2009 년 일본 국내예선에서도 동경대에 이어 3 위를 차지한 바 있다.

Aizu Online Judge 는 일본 Online Judge 답게, 많은 문제들이 일본어로 작성되었다는 점이 특징이다.

중국을 봐도, PKU (Peking Univ. 북경대) TOJ (TainJian Univ. 천진대), ZOJ (Zeijiang Univ. 절강대) 등 직접 Online Judge 를 운영하는 대학들이 대개 ICPC 성적이 좋다. 역시 관심과 연습량은 성적에 비례하기 마련인것 같다.

한국에는 아직 대학 차원에서 대규모로 운영되는 online Judge 는 없고, Algospot.com 에서 운영중인 AOJ 가 한국어 위주로 운영되는 거의 유일한(개인이 운영하고 있거나 일부 정보경시 학원등에서 회원제로 운영하는 Online Judge 들을 논외로 한다면.) 개방된 Online Judge 가 아닐까 싶다. - 사실은 아직 문제갯수나 유저숫자면에서 외국 OJ 보다 뒤쳐진다. 
ICPC 에 관심이 많은 대학이라면 직접 Online Judge 시스템을 구축하고 운영해 본다면 간접적인 대학 홍보도 되고 학생들의 실력을 배양하는 좋은 인프라도 될 것 같은데... Problem Solving 수업이 있는 몇몇 학교들도 수업 과제등은 UVa 등의 외국 사이트에 의존하는 현실을 생각해 보면, Online Judge 의 필요성은 더욱 크게 느껴진다. 물론 대학생이상이라면 영문 사이트에서 그냥 연습해도 상관없겠지만 정올, KOI 를 준비하는 중고등학생 중 영어가 부담스러운 친구들은 아직도 PKU 나 UVA 를 번역한 사이트에 의존하는 경우가 많은 현실이다.

PS) Aizu Online Judge 의 상위권에도 보이는 이름 LayCurse... 이 인간 정체가 궁금하다...
최근 몇년 사이에 각종 Online Judge 의 상위권에 전부 자기 이름을 걸어 놓았던데... 최근 1-2년 사이에 2000 - 3000 문제는 푼 것 같다... ;;


이올린에 북마크하기(0) 이올린에 추천하기(0)
http://soyoja.com/trackback/330 관련글 쓰기
댓글을 달아주세요!
  1. BlogIcon 그래요 2009/09/15 18:32  댓글주소  수정/삭제  댓글쓰기

    이 분의 블로그를 RSS리더기에 추가하고 읽지는 않습니다만(...일본어니까)

    정말 엄청나게 풀어대더군요 약 1주에 최소 10문제는 포스트 하는 듯 합니다.

  2. BlogIcon hyperdash 2009/09/17 17:10  댓글주소  수정/삭제  댓글쓰기

    이제 연습은 고만하고 엔지니어링을 해야지???

이름 암호 홈페이지


이런 코드가!

Contest/etc 2009/08/11 11:59



며칠전 TopCoder 에서 이 문제를 풀다가 발견한 사실.

일반적인 큐브 문제와는 달리, 이 문제는 모든 면의 큐브의 모양이 동일하므로 한 면만 가지고 단순 시뮬레이션을 하면 되는 문제이다.
이때 boundry 를 넘는 경우에 대한 처리가 필요한데, 대략 나는 아래와 같이 처리했다.



Astein 의 코드를 보니 모듈러 연산을 이용해서 동일한 내용을 다음과 같이 처리했다 ㅠㅠ 
7-8, 12-15 라인을 비교해 보면 된다.
 

헐퀴... 이런 세련된 방법이... ;;;

이올린에 북마크하기(0) 이올린에 추천하기(0)
http://soyoja.com/trackback/325 관련글 쓰기
댓글을 달아주세요!
  1. BlogIcon Hyperdash 2009/08/11 18:52  댓글주소  수정/삭제  댓글쓰기

    헐~~ 별 고민없이 코딩했었나 보구만...

    흔히 사용하는 방법인데...

  2. winner 2009/11/10 11:27  댓글주소  수정/삭제  댓글쓰기

    보통 soyoja 님이 작성하신 code가 빠릅니다.
    예전에 풀었던 문제에서 그 부분이 전체 time complexity를 지배하는 연산이었는데 soyoja 님의 방식으로 시간을 크게 줄인 적이 있습니다.

이름 암호 홈페이지




오늘 지메일을 열어보니 한여름이 절반이나 지났는데 감감 무소식이라 열리네 마네 한동안 소문이 무성하던 구글의 프로그래밍 경시대회, 구글 코드 잼(Google Code Jam) 2009 년 대회 개최 소식이 있었다.

8월 중순 경부터 시작되며, 퀄을 포함해서 총 네번의 온라인 예선를 거쳐 최종 25 명은 캘리포니아 구글 본사에서 11월에 결승전을 갖는 일정이다.

작년에는 지역 결선 출전이 500 명, 최종 결선 출전자가 100 명이었는데 올해는 지역 결선도 없는 듯 하고 최종 결선자 쿼터가 25 명으로 대폭 그 숫자가 줄었다. 구글도 요새 좀 어렵다는 이야기가 들리던데... 역시 규모가 축소된 코드 잼에서부터 그런 느낌을 받게 된다.



Code Jam is back!

We're excited to announce Google Code Jam 2009, this year's iteration of
Google's annual programming competition, which offers coders from around the
world an opportunity to solve complex algorithmic problems under time
pressure, using the programming languages and tools of their choice.
The contest will have a new format this year, starting with online rounds
and ending in a 25-person final in our Mountain View, California
headquarters. We're still choosing exact times for everything, but for
planning purposes we wanted to give you this tentative schedule. Please note
that the timing may change:

Early-Mid August: Registration will open.
+4 Weeks: Qualification round
+1 Week: Rounds 1A, 1B, 1C
+1 Week: Round 2
+1 Week: Round 3
November: World Finals in Mountain View

Online rounds begin soon, so start practicing!

The Google Code Jam Team
http://code.google.com/codejam

이올린에 북마크하기(0) 이올린에 추천하기(0)
http://soyoja.com/trackback/320 관련글 쓰기
댓글을 달아주세요!
이름 암호 홈페이지




미국발 금융위기로 시작된 경제 불황은 전 세계적으로 영향을 주고 있다.

내 주위 사람들과 주위 환경도 이래 저래 직,간접적으로 불황의 영향을 받고 있는데, 그 중 하나가 바로 TopCoder 이다. ( TopCoder 소개는 여기... )

여러가지로 드러나는 정황을 볼 때, 최근 수년간 급성장하던 TopCoder 역시 많이 어려운 시기를 맞고 있는 것으로 보인다.

우선, Member Referral Bonus 서비스가 TopCoder Studio 를 제외하고는 모두 종료되었다.

As of December 5, 2008, the referral program will award commission based on the winnings of new members of TopCoder Studio only. TopCoder will honor all commission payments due based on non-Studio referrals made before 12/5/08.

또한, 2009 년도 일정이 공개되었는데, SRM 은 기존의 1 주당 1회 열리던 것이 2 주당 1 회씩 열리게 되어있고,  TopCoder Business 의 핵심이라 할 수 있는  Design and Development 는 아예 일정도 나오지 않았다. 물론 계속 열리기야 하겠지만... 2009 년이 1 주일도 채 남지 않았는데 아직 일정조차 확정되지 않았다는 것이 충격이다.

여기에 대해서 여러가지로 많은 논란이 있는데...

SRM 에 참가하기 위해 참가비를 받자는 의견도 있고...

호스팅 비용에 보태기 위해 TopCoder 에 구글 애드센스를 달자는 좀 유치한 의견도 있었다.. -0-

개인적으로는 여러모로 많이 아쉽다. 원래 취지에 비추어 볼 때 SRM 에서 참가비를 받는 것은 옳지 않은듯 하고, 참가비를 받자는 것에 대해 여러 회원들의 반발도 만만치않다. SRM 을 자주 여는 것이 어느정도의 예산이 필요한지는 잘 모르겠지만... 다른 형태의 지출을 절감하더라도 SRM 을 비롯한 여러 이벤트들을 자주 여는 것이 좋지 않나 하는 생각도 든다.

사실 약간은 이해가 안가는 것이 아마 예산에서 가장 크게 차지하는 비용이 호스팅 비용일텐데... 서버는 항시 돌아가고 있을테니 호스팅 비용은 고정적일텐데 SRM 을 한 번 열때마다 어느정도의 추가 예산이 필요하길래 SRM 횟수까지 줄이는 건지 궁금하기도 하다.
 
어쨌든... 프로그래머들의 실력 향상과 커뮤니케이션에 지대한 공을 세우고 있는 사이트이니 만큼... 하루빨리 정상화 되기를 바랄 뿐이다. -0-;

'Contest > TopCoder' 카테고리의 다른 글

TopCoder SRM Issue  (2) 2008/12/29
온라인 프로그래밍 경시대회 TopCoder 소개  (14) 2007/07/22
http://soyoja.com/trackback/282 관련글 쓰기
댓글을 달아주세요!
  1. 고글 2009/01/02 02:38  댓글주소  수정/삭제  댓글쓰기

    안 빠져먹고 2주에 한번하는거라도 참여를 해야되는데..;;; 올해 div1으로 같이 올라가용~ㅋ

    그리고 새해 복 많이 받으세요~ㅋㅋ
    5월에 교내대회 할때 뵈요...;;

이름 암호 홈페이지



잊어먹을 까봐 간략히 끄적여보는 뒷이야기들...

( 대회장에서 들은 이야기들이라 일부 오류가 있을 수 있음 )

이번 대회 가장 주목받은 팀은 대회 1 위팀인 서울대학교 HP^3 팀이었다.
2003 년 이후 5 년만에 등장한 서울대회 만점팀이었는데, 이 팀이 가장 마지막으로 푼 문제는 의외로 세번째로 많이 풀렸던 C 번이었다고 한다.
9 문제를 풀고, 가장 마지막으로 C 번을 서브밋 했을 때가 종료 20 분 전이었는데 대회 끝날때까지 판정이 나오지 않았다 한다. 그래서 기다리다 못해 clar 를 날렸더니 저지로 부터 온 대답이 걸작이었단다.
"Don't worry, be happy"

대회종료 30 분을 남기고 스코어보드는 업데이트가 되지 않지만 풍선은 계속 업데이트가 된다. 마지막까지 대회장 내에서는 누가 우승했는지 모르게 하려는 주최측의 배려(?) 가 느껴진다.

HP^3 팀은 많은 사람들이 대회전부터 우승후보로 꼽았다. 국내 예선 1위 팀이었고, 출전당시 기준으로 1 명의 탑코더 레드(domeng)와 2 명의 옐로우(ipkn, wookayin) 로 이루어진 팀이다. domeng 님은 국내 출전자들 중에서 TopCoder 랭킹이 가장 높으며, 금년 여름 IOI 조교로 이집트에 다녀오기도 했고, 올해 GCJ 에서 JongMan, ltdtl, yyoud88 과 함께 한국인 파이널리스트들 중 한명이다. 한마디로 요새 완전히 물이 오른 느낌?

또다른 우승후보 팀인 일본의 __________(andaasukoaazu)  ( 팀이름 한번 길다.. ) 동경대 팀에는
(iwi) 라는 TopCoder 레이팅 2400+ 의 무서운 고수가 있었는데... (일본 IOI 팀 조교출신이라 함) 황당하게도 정작 저 사람은 대회 내내 단 한 문제도 풀지 않았다 한다. -0-;; 또다른 팀원이 혼자서 8 문제를 다 풀었다고..;;  (뭥미... )
동경대 팀은 D 번에서 말린 것이 패인이었다 함.

넥슨 특별상과 NHN 특별상은 스폰서쉽이 걸린 문제, E 번과 H 번을 가장 빨리 푼 팀과 상위권 중 학교 2위팀에게 주어졌는데, NHN 특별상을 받은 연세대 Agari-Fighter 팀은 아예 초반부터 특별상을 노리고 A 번도 안보고 대회 시작하자마자 H 번부터 풀기 시작했다고. H 번이 가장 먼저 풀렸을 당시 시간은 대회 시작후 37 분, E 번이 가장 먼저 풀렸던 시간은 대회 시작후 40 분이었다.

연세대 MorningTree 팀은 바로 그 다음날 있는 대만대회에 참가하기 위해 시상식도 불참했다. 11월 7일 서울대회 출전 후 바로 비행기 타고 대만가서 대만대회 예비소집은 생략하고 바로 11월 8일 대만대회 참가라는 살인적 일정...

올해는 예년과 달리 대회 도중에 전체 참가팀의 submission 횟수와 어떤 문제를 풀었는지 여부를 상세히 볼 수 있는 full summary 가 제공되었는데, ( 단, 대회 참가자들은 철저하게 외부와 격리되어 오직 대회장 내에서 제공하는 standing 정보만 볼 수 있었다 ) 순전히 algospot 중계에 도움을 주기위한 배려였다고 한다. ^^; 

이올린에 북마크하기(0) 이올린에 추천하기(0)
http://soyoja.com/trackback/269 관련글 쓰기
댓글을 달아주세요!
이름 암호 홈페이지











2008 ACM-ICPC Asia Programming Contest - Seoul Site

2008/11/06 - 2008/11/07
Kimkoo Museum and Library
Hosted by KAIST


Final Standing

Rank School Team Solved Penalty
1 Seoul National University HP^3 10 1711
2 Seoul National University MP^3 9 1526
2 Zhongshan (Sun Yat-sen) University ZSU_Metatron 8 668
3 The University of Tokyo __________(andaasukoaazu) 8 835
4 Seoul National University NP^3 8 1007
4 Korea Advanced Institute of Science and Technology So Hot 8 1022
5 Pohang University of Science and Technology POSCAT 7 692
6 Information and Communications University Children's Playground 7 835
7 Tianjin University TJU_HanoiTower 7 841
8 Sogang University Coderani 6 638
9 Yonsei University MorningTree 6 864
10 Information and Communications University Hurry Up 5 507
10 Soongsil University BM@SCCC 5 622
11 Jilin University n2o 5 860
11 Yonsei University Agari-Fighter 5 890
12 Ajou University Wang Team 4 332
13 Korea Advanced Institute of Science and Technology PSKSA 4 333
13 Inha University SOD 4 503
14 Sejong University S.S.G 4 518
14 Soongsil University Ctrl+Z 4 520
15 Information and Communications University Jollypong 3 186
15 Pohang University of Science and Technology AdvancedPOSCAT 3 193
15 Korea Advanced Institute of Science and Technology Dal-inz 3 210
15 Soongsil University Algoleader 3 217
15 Kyung Hee University ZRALER 3 234
16 Kangwon National University A.I 3 267
17 Yonsei University ASCII 3 288
17 Kookmin University Heuristic 3 341
18 Soongsil University in.10.C.T. 3 379
18 Hansung University HANSUNG-U 3 429
19 Ajou University Why_So_Serious 3 449
19 Chung-Ang University ZeroPage 3 480


서울대학교의 Seoul Site 3 년 연속 우승으로 대회는 막을 내렸다.

한편, ACM-ICPC 와 함께 수상하는 제 8 회 전국 대학생 프로그래밍 경시대회 수상내역은 다음과 같다.

대상 : 행정안전부 장관상 / 상장 및 상금 300 만원 or 세계대회 참가경비 지원
서울대학교 HP^3

금상 : 행정안전부 장관상 / 상장 및 상금 100 만원
한국과학기술원 So Hot
포항공과대학교 POSCAT

은상 : 한국정보문화진흥원장상 / 상장 및 상금 70 만원
정보통신대학교 Children's Playground
서강대학교 Coderani
연세대학교 MorningTree

동상 : 한국정보문화진흥원장상 / 상장 및 상금 50 만원
숭실대학교 BM@SCCC
아주대학교 Wang Team
인하대학교 SOD
세종대학교 S.S.G

넥슨 대표이사상 / 상장 및 상금 50 만원
서울대학교 MP^3
한국과학기술원 PSKSA

NHN 대표이사상 / 상장 및 상금 50 만원
정보통신대학교 HurryUp
연세대학교 Agari-Fighter

특별상인 넥슨 대표이사상과 NHN 대표이사상은 수상팀 중에서 학교 2 위팀, 그리고 넥슨과 NHN 스폰서쉽이 걸린 E 번과 H 번을 가장 빨리 푼 팀에게 주어졌다.

그외에, 서울대학교 NP^3 팀은 전체 5등이란 성적임에도 학교 3 위 팀인 관계로 아무런 상을 받지 못하여, 대회감독관님이 별도로 봉투를... (금일봉?) 수여하는 훈훈한 장면도 있었다.


Comment.
서울대학교의 서울대회 3 년 연속 우승.
서울대는 올해도 여전히 막강한 전력을 과시하면서 다른 학교들과는 상당한 격차를 보였다. 서울대학교의 2등팀도 서울대회 우승을 할 수 있는 전력이었으니 말 다했지. 서울대학교 3 팀이 받은 풍선의 총 갯수는 27 이다. -0-  두터운 선수층에, 매년 새로운 괴물 신입생들이 유입되기 때문에 당분간 서울대의 독주는 계속될 전망이다.

올해도 역시 중국의 강력한 도전.
중국팀은 3 년 연속으로 서울대회 2 등이다. 초반에 ZhongShan 대학이 빠르게 8 문제까지 풀면서 상당히 오랫동안 1 위를 지키고 있어서 많은 대회 관계자들이 긴장했다고 한다. 최종적으로는 비록 2 위에 그쳤지만 ZhongShan 대학도 월드 파이널 출전은 확정적이다. ( 이 팀이 나갈지는 모르겠으나... )
한편, 개인적으로 우승후보로 꼽았던 동경대학교는 3 위에 그쳤다. 이 팀에 대해서는 대회후 재미있는 뒷이야기를 들었다. 여기에 대해서는 따로 포스팅~

월드파이널 티켓 예상.
예년과 같은 기준을 적용해 보자면, 작년의 경우 서울대회에 1.6 장의 월드 파이널 출전 쿼터가 주어져서, 실제로는 2.33 쿼터가 사용되면서 (국내팀 2.0 + 중국팀 0.33 ) 국내 팀 중에서는 1위인 서울대학교와 3위인 정보통신대학교가 월드 파이널에 나갈 수 있었다.
올해의 경우도 서울대회에 작년과 마찬가지로 1.6 쿼터가 할당된다면, 서울대 (1.0 쿼터) 중산대 (0.33 쿼터) 동경대 (0.33 쿼터) 까지로 쿼터 분배는 끝날 것 같다. 학교순위로 네번째인 한국과학기술원 (KAIST) 은 주최대학 와일드카드를 사용하거나 해외 대회에서 티켓을 따지 않는 한 월드파이널 출전이 어려울 전망이다.

참고로 작년도의 월드파이널 쿼터배분 기준을 설명하자면,
자국팀이 자국 대회에서 쿼터를 받는 경우 = 1.00 쿼터 사용
해외 대회에서 이미 쿼터를 확보한 자국팀이 자국대회에서 다시 쿼터를 받는 경우 = 0.66 쿼터 사용
자국대회에서 해외팀이 쿼터를 받는 경우 = 0.33 쿼터 사용
이렇게 된다.
결국, 중국 대회에 그렇게 많은 쿼터가 걸려 있음에도 상위권 중국팀들의 해외 원정이 활발한 이유는, 중국팀이 아시아 다른 지역 대회에서 상위권에 입상하여 월파 쿼터를 받게 되면 중국대회의 출전 쿼터가 늘어나는 효과가 있기 때문인 것이다.


금상 팀
매년 대회때마다 5 - 10 위권 성적을 거두던 포항공대는 올해는 최초로 금상을 받으면서 국내 ACM-ICPC Big 4 ( 월드 파이널에 나가본 국내 ICPC 성적 상위권 4 개 대학. 서울대, KAIST, 연세대, ICU ) 를 제외하고 금상을 받는 두번째 팀이 되었다. ( 첫번째 팀이 어디인지는 퀴즈...  )

은상 팀
은상팀들은 전력에 비해 예상외로 부진했다.
ICU 는 좋은 성적이 기대되었지만 은상에 그쳤다. 대회 당일 기준으로, 한국팀 출전선수들 중에 단 2 명의 TopCoder 레드가 있었는데 그중 한명은 우승팀에 있었고 나머지 한명은 Children's Playground 팀에 있었다.
예선 2 위였던 연세대학교 MorningTree 역시 본선에서는 9위에 그쳤다.
서강대학교는 작년에 이어 올해에도 은상을 받으며 2년 연속으로 은상 수상이다.  참고블로그 

동상 팀
숭실대학교는 올해 수상하면서 대학생 프로그래밍 경시대회 6 년 연속 수상에 성공했다.  (팀원 세명다 KOI 출신이라고... )
매해 해외대회 파견에 올해는 교내대회를 개최하며 ICPC 에 열정을 쏟은 아주대학교도 수상에 성공한다.
세종대학교와 인하대학교 역시 학교 내 모임을 주축으로 매우 열심히 ICPC 를 준비한 팀들로 알고있다.





이올린에 북마크하기(0) 이올린에 추천하기(0)
http://soyoja.com/trackback/273 관련글 쓰기
댓글을 달아주세요!
  1. BlogIcon wookayin 2008/11/20 20:25  댓글주소  수정/삭제  댓글쓰기

    티켓 룰은 어렵군요 @_@

    • BlogIcon soyoja 2008/11/26 15:34  댓글주소  수정/삭제

      처음에 이해하는데 한참 걸렸습니다...
      그런데 곰곰히 생각해보면 상당히 합리적입니다.
      아무래도 국내팀이 자국 대회에서 홈 어드벤티지가 있기 때문에 그런 부분을 적절히 고려한 쿼터 배분인 것 같습니다.

  2. 세종대 2008/11/21 13:04  댓글주소  수정/삭제  댓글쓰기

    약간 잘못된 정보가 있네요. 세종대 팀은 각자 놀다가 대회 당일 처음으로 호흡을 맞춰보았습니다. =_=;;

  3. 2008/11/25 11:38  댓글주소  수정/삭제  댓글쓰기

    비밀댓글 입니다

이름 암호 홈페이지



한동안 좀 슬럼프였다 -0- 
지난주에 있던 TopCoder SRM 도 완전 망하고..


http://article.joins.com/article/article.asp?Total_ID=3175754

고딩들도 저렇게 열심히 하는데...

이제 딱 3 일 남았으니... 남은 기간 정리 잘 하자~

PS ) 현재 PKU 랭킹에서 2등과 3등이 한국인인데...
둘다 KOI, IOI 준비하는 고등학생.. -0-;;
 ( 아.. 한명은 올해 대학교 입학한 신입생이구나 )
2 등인 Jae Hyun Park 이란 학생이 저 기사에 언급된 스탠포드에 입학했다는 그 사람.
그리고 3 등인 Suby(세명고3 심민섭, 작년도 KOI 금상) 도 Koi4U 에서 자주 보이는 아이디이다.
저 2 명이 현재 각각 2100 문제 풀었음.. ㄷㄷㄷ

2200 문제 푼 현 PKU 1 등은 치터라는 의견이 분분...  ( 10 분 단위로 무지막지하게 서브밋을 하고 있음.. )

PS2 ) 저 기사 중간에 나와있는 고등부 지역예선 기출 2 문제를 풀어봤다.. ㅋ
13 번 문제는 USACO Training Course 에도 있는 문제... 그냥 위에서부터 아래로 더하면서 max 값을 유지하면서 젤 아래까지 더해 내려오면 풀리는 것이고.
28번 문제는 꽤나 재미있었다. 한동안 생각했는데 이것 저것 생각해보니 (ㄴ) 에 들어가야 하는 기호가 or and 연산인 것을 깨닫고보니 바로 풀리는 문제였다. ㅎㅎ
이런 거 풀어보는 것도 잼있군.. ㅋ

http://soyoja.com/trackback/266 관련글 쓰기
댓글을 달아주세요!
  1. BlogIcon wookayin 2008/11/05 01:30  댓글주소  수정/삭제  댓글쓰기

    고딩들이 젤로 무섭습니다.

  2. violet 2008/12/11 12:58  댓글주소  수정/삭제  댓글쓰기

    위의 이 친구들은 좀 특별한 아이들이지만~! (저희 학교에도 컴터 특기생이 있었는데... 위는 정말 대단해요)

    대학 입학하고 주욱 느끼는건~ 고등학교 때 제일 열심히 한거 같아요 ㅎㅎ

  3. BlogIcon neoevoke 2009/08/11 17:44  댓글주소  수정/삭제  댓글쓰기

    기사에 나오는 문제요...
    어떻게 하지? 하고 너무 신기해서 보다보니...
    ㄴ에 들어갈 연산이 &연산인거 같아요~~

이름 암호 홈페이지



풀수 있는 문제들은 최대한 풀어보자...

그런데... 다른 지역들은 대회 공식 홈페이지에 Judge Data 를 오픈한 곳들도 많은 반면...
ICPC 한국지역 대회의 기출문제들은 그런 면에서 좀 부족한듯...;;
유일하게 Judge Data 를 오픈했던 것이 2001 년...

출제되었던 문제의 테스트 데이터를 공개하지 않는 것은 혹시라도 있을 참가자들의 어필을 우려하기 때문이라고 밖에는 생각이 들지 않는데...;;; 쩝...


Taejon 2000 :


Taejon 2001 :
본선문제 PKU 1060 ~ 1092  or  ARC 2321 ~ 2328
http://acmicpc-live-archive.uva.es/nuevoportal/region.php?r=as4&year=2001
http://acm.pku.edu.cn/JudgeOnline/searchproblem?field=source&key=Taejon+2001


Taejon 2002 :
본선문제 PKU 1330 ~ 1337
http://acm.pku.edu.cn/JudgeOnline/searchproblem?field=source&key=Taejon+2002


Seoul 2003 :
본선문제 ZJU 2679 ~ 2687
2679 :
http://acm.zju.edu.cn/show_problem.php?pid=2679


Seoul 2004 :
예선문제 Hello-World 44
http://www.hello-world.co.kr/?q=node/110


Seoul 2005 :
예선문제 Hello-World 41 - 43
http://www.hello-world.co.kr/?q=node/104

본선문제 TJU 2501~2510
http://acm.tju.edu.cn/toj/search_process.php?s=Asia+-+Seoul+2005


Seoul 2006 :
예선문제 Hello-World 35 - 40
http://www.hello-world.co.kr/?q=node/98

본선문제 ZJU 3131 ~ 3140
http://acm.zju.edu.cn/onlinejudge/searchProblem.do?contestId=1&titlefrom=0&authorfrom=0&sourcefrom=0&query=Seoul%202006


Seoul 2007 :
본선문제 ARC 3900~3909
http://acmicpc-live-archive.uva.es/nuevoportal/region.php?r=as4&year=2007


Seoul 2008 :


원본 출처 : wookayin.com

이올린에 북마크하기(0) 이올린에 추천하기(0)
http://soyoja.com/trackback/265 관련글 쓰기
댓글을 달아주세요!
    • BlogIcon soyoja 2009/05/27 12:11  댓글주소  수정/삭제

      오호.. 감사합니다 ^^ (바로 링크 추가.. ㅋㅋ )

      혹시 올해 ACM-ICPC 도 출전하시나요?

      PS ) 늦었지만 해킹 세계대회 우승도 축하드려요~~

  1. song 2009/12/28 20:07  댓글주소  수정/삭제  댓글쓰기

    혹시.. 2000년도 문제중에서 problem C번 문제 Moving pegs 푸신분 계신가요??;;
    그 문제 잡고 몇시간째 헤메고 있는데.. 싸이트를 뒤져봐도 관련된 소스코드는 구하기가 힘들군요..ㅠ.ㅜ;
    혹시 도움주실수 있는 분.. 네이트온이나 다른 메신져 아이디 남겨주시면 친구추가 하겠습니다..(__)

이름 암호 홈페이지



Problem Solving 의 정수론 분야 중 두 수의 최대공약수최소공배수를 이용한 문제들은 매우 자주 등장하는 편이다.
구하는 방법은 여러가지가 있는데...


방법 1) 소인수 분해 (Prime Factorization)
중학교 때 배우게 되는 소인수 분해를 이용한다
어떤 수의 모든 소인수를 구하는 방법은 소수구하기 알고리즘을 이용한다.

소인수분해는, a 와 b 를 소수로 나눌 수 있는 만큼 인수분해하여, 최대공약수는 두 수의 공통된 소인수들 중에서 차수가 최소인 값들의 곱이 되며, 최소공배수는 두 수의 모든 소인수들 중에서 차수가 최대인 값들의 곱이 된다.


이 방법은 수학시간에 배운 직관적인 방법이고, 많은 이들에게 익숙하지만 위에서 보듯이 코딩으로 옮기기에는 꽤나 귀찮다는 단점이 있다. 또한 두 수 a, b 의 모든 소인수를 구해서 저장해 놓아야 하므로 별도의 메모리를 필요로 한다. ( 위의 코드는 10000 까지의 소인수에 대해서 구현한 코드 )


방법 2) Brute force
최대공약수의 정의를 이용하여, brute force 방법으로 직접 구한다.
즉, 두 수 a, b 를 나누어서 나머지가 0 이 되는 수들 중에서 가장 큰 숫자를 구하면 이 숫자가 최대공약수가 되며, 두 수 a, b 의 배수를 구하여 공통된 배수 중 가장 작은 숫자를 구하면 이 숫자가 최소공배수가 된다.

위의 코드에서 만약 a, b 간의 공약수가 존재하지 않는 경우는 두 수의 최대공약수는 자연스럽게 1이 되며, a, b 간의 최소공배수 중 가장 클 가능성이 있는 수는 a*b 가 되므로 a*b 까지만 검사를 하면 된다.

이 방법은 최대 a*b 번의 연산을 해야 하므로,  a 와 b 가 커질수록 수행시간이 급격히 늘어난다.


방법 3)
Euclid's algorithm - Using Recursion
사실 최대공약수와 최소공배수를 구하는 것은 고대 그리스의 수학자, 유클리드가 고안한 "유클리드 알고리즘"(Euclid's algorithm) 을 쓰면 간결하게 해결할 수 있다. 이 방법은 The Art Of Computer Programming 의 제 1장에도 소개된 바 있다.
a, b 중 큰 수를 a, 작은 수를 b 라 하자. 이 두 수의 최대공약수를 구하려면 a 를 b 로 나눈다. 이 연산을 한 후에 b 와 a%b 를 갖고 어느 한쪽이 0 이 될때까지 이 과정을 계속 반복한다. a%b 가 0 이 될 때의 b 가 바로 최대공약수가 된다. 이를 코드로 옮기면 다음과 같다.


최대공약수와 최소공배수의 성질을 이용하면 아래와 같이
최소공배수 = (a*b) / 최대공약수
최대공약수 = (a*b) / 최소공배수
가 되므로, 최대공약수나 최소공배수 둘 중 하나만 구하면 나머지 하나는 쉽게 구할 수 있다.


방법 4) Euclid's algorithm - Using Iteration
방법 3 은 매우 간결한 코딩이 가능하지만, 재귀호출을 이용한다는 단점이 있다. 재귀호출은 상당히 비싼 작업이므로 이를 좀더 효율적인 iteration 버전으로 바꿀 수 있다. 실제로 방법 3은 a, b 가 매우 큰 서로소일 경우 답을 얻는데 꽤 오랜 시간이 걸리게 된다.



방법 5) Euclid's algorithm - Using Iteration, Original Version
유클리드가 처음 이 알고리즘을 제안했을때 사실은 modular 연산을 사용하지 않고, 아래와 같이 뺄셈 연산을 이용했다 한다.
 
방법5 는 방법 4와 비교하여, tmp 변수를 사용하지 않아도 되므로 메모리를 약간 절약한다는 장점이 잇다 ^^

유클리드 알고리즘의 증명 = 자세한 설명은 생략한다 Wikipedia 참고
유클리드 알고리즘의 시간복잡도 = O(n^2), n = length of integer bits, 그 이유는 n-bit 숫자 나눗셈 연산의 시간복잡도가 O(n(m+1)) 이기 때문이다 ( m 은 몫의 길이 )

3개 이상의 수에 대해 최소공배수와 최대공약수를 구할 때는, 두 수의 최소공배수와 최대공약수를 구한 후, 이 수와 나머지 수들에 대해 최소공배수와 최대공약수를 구하면 된다.

유클리드 알고리즘을 처음 보았을 때 무릎을 쳤던 기억이 난다. 그래서 최대공약수와 최소공배수에 대해서 글을 반드시 함 써보려 했는데... 위키피디아에 유클리드 알고리즘이 깔끔하고 멋지게 정리가 되어 있었다 ㅋ

이올린에 북마크하기(0) 이올린에 추천하기(0)
http://soyoja.com/trackback/261 관련글 쓰기
댓글을 달아주세요!
  1. BlogIcon 김경태 2008/10/19 00:04  댓글주소  수정/삭제  댓글쓰기

    오 알고리즘 정리 해놓으시는 카테고리도 있네요. 가져가도 될까요? 후배들 교육용으로? 발행 안하고 내부 문서로만 쓸 예정입니다.

  2. BlogIcon hyperdash 2008/10/21 01:19  댓글주소  수정/삭제  댓글쓰기

    출처 안밝히고 막 써도 되는 자료지? ㅋㅋㅋ

  3. mosaick 2009/08/11 16:55  댓글주소  수정/삭제  댓글쓰기

    지나가다 하나 추가하면 좋을 것 같아서, ^^a


    방법5 는 방법 4와 비교하여, tmp 변수를 사용하지 않아도 되므로 메모리를 약간 절약한다는 장점이 잇다 ^^
    => 방법4는 modular연산을 통해 방법5에 비해서 순회횟수를 줄인다.

  4. BlogIcon 연꿈 2009/11/20 16:30  댓글주소  수정/삭제  댓글쓰기

    와 정말 잘 정리해놓으셨네요
    출처밝히고 참고해도 괜찮을까요

이름 암호 홈페이지



ACM-ICPC 국내예선 대회를 일주일 앞둔 지난 9월 20일,
모교에서는 교내 프로그래밍 경시대회가 열렸다.

작년도 교내 프로그래밍 경시대회 포스팅

금년도 교내대회 출전팀 숫자는 총 67 팀 ( 참가자 숫자 3*67 = 201 명 ). 작년보다는 약간 줄기는 했지만 여전히 국내 최대 규모로 치루어졌다. 작년에는 교내대회 상위 2팀 + 국내예선 상위 2 팀을 해외대회에 파견하였는데, 그렇게 하다보니 서울대회는 참가하지 않는 팀이 ( 물론 대학원 면접, 회사 면접 등이 겹치는 어쩔수 없는 사정들이 있었다고는 하나... ) 해외대회만 출전하는 상황이 생기면서 문제가 되었던 것 같다.

실제로, 이런 이유로 서울대회에서도 올해는 "참가확인" 을 받으면서 대회불참팀이 생기지 않도록 규정을 새로 만든 모양이다.

관련글 보러가기

그래서 올해의 교내대회는, 국내예선에 출전하는 상위 30 개팀을 선발하는 목적으로 치뤄지며 ( 물론 교내대회 성적에 따른 상금 시상은 있다 ), 해외대회 파견팀은 국내예선 상위 4 개팀만을 파견하기로 결정되었다.

나는 작년에 이어 올해도 교내대회 문제출제자 겸 심사위원으로 참관했다. 아주 재미있는 경험이었다. ^^

사용자 삽입 이미지
이곳이 바로 Judge Room 이다. 교수님 외에 6 명이 Judge 로 수고했다.

사용자 삽입 이미지
대회 오리엔테이션. 올해는 학장님도 오시고 해서 작년보다 좀 더 격식을 갖췄다고 할까.

사용자 삽입 이미지
Judge 룸 상황. 실제 대회가 시작되면 Judge 들도 대회 치루는 것 처럼 정신이 없다. Judge 들은 각자 자신들이 출제한 문제에 대해 judge 를 맡게 되는데, A, B 번을 맡은 사람들은 대회 시작부터 끝까지 아주 죽어난다. -0- 반면 G, H 를 맡은 사람들은 할일이 없어서 심심하게 보내게 된다. ㅋㅋ 나는 적당히 바쁜 D 번 문제에 대한 출제 및 심사를 맡았다.

사용자 삽입 이미지
올해는 ACM-ICPC 서울대회와 비슷하게 격식을 갖춰, 티셔츠 까지 제작해서 나눠줬다. 그 외에 대회시간 내내 간단한 다과가 제공...
사실 참가자와 스탭들이 티셔츠를 입으니 여러가지로 대회 운영상 편리한 점이 많았다. 대회 참가자와 스탭을 쉽게 구분할 수 있고, 대회 운영 중 통제도 더 쉬워진다. 앞으로는 매년 이렇게 티셔츠 제작도 하게 될 것 같다.

사용자 삽입 이미지
실제 대회 시간 중...

사용자 삽입 이미지

대회 종료 후, 시상식 장면.
이 팀이 1위 팀인데, 문제해결 수업 때 매우 두각을 나타냈던 친구들이라 한다.

그런데 아쉬운 것은, 정작 국내예선에서는 이 교내대회 1 위팀이 2 문제에 그치면서 서울대회 출전이 좌절 된 것 -0-;

개인적으로도 매우 재미있는 시간이었다.


교내대회 출제문제

http://soyoja.com/trackback/257 관련글 쓰기
댓글을 달아주세요!
  1. BlogIcon 도맹 2008/10/13 19:29  댓글주소  수정/삭제  댓글쓰기

    안녕하세요~ 굉장히 교내대회가 후덜덜덜 하네요 ㅠㅠ 학장님도 오시고;;

    • BlogIcon soyoja 2008/10/14 00:04  댓글주소  수정/삭제

      안녕하세요!
      정작 제가 졸업하고 나니까 대회를 팍팍 밀어주는 혜택이 많아졌다는... -0-;;

  2. BlogIcon Radient 2008/10/23 03:04  댓글주소  수정/삭제  댓글쓰기

    이제야 후기 봤습니다!

    형도 참 수고 많으셨어요! 올해 교내대회 성적이 안좋아서 좀 우울한데, 서울대회때는 다시 학교 1등 노릴기세로 할껍니다! ㅋㅋ

    • BlogIcon soyoja 2008/10/24 10:11  댓글주소  수정/삭제

      올해도 해외대회 나가고.. 잘한거지 뭘...
      나도 서울 대회에 가니까.. 서울대회때 보자궁.. ;)

이름 암호 홈페이지



2001 년부터 ACM-ICPC(세계 대학생 프로그래밍 경시대회) 아시아지역 대회와 겸해서 치뤄지는 전국 대학생 프로그래밍 경시대회, 올해도 어김없이 개최된다.

2008 년 11월 6일 - 11월 7일, 백범 김구 기념관.

새정부 들어 정보통신부가 없어져서, 그 전까지 본 대회를 주관하던 정부 주무부서가 정보통신부에서 행정안전부로 바뀌었다. ( 개인적으로는 교육과학기술부가 담당하는 것이 맞지 않나 싶었지만... 알아보니 정부부처가 통폐합되면서 기존에 정보통신부에서 맡아오던 IT 관련 업무가 행정안전부로 이관되었다고. )

주최는 행정안전부, 대회 메인 스폰서는 IBM. ( IBM 은 Regional Contest 에서는 별 존재감이 없긴 하지만... )

Secondary 스폰서는 예년과 마찬가지로 NHN 이 맡고 금년들어 Nexon 이 새로 스폰싱을 한다.
이런면을 보면 알고리즘 문제풀이 경시대회의 가치에 대해서 IT 기업체들도 그 중요성을 공감하는 분위기가 확산되는 듯 하여 흐믓하다.

 
사용자 삽입 이미지

올해의 경우 대회 포스터가 꽤나 맘에 들게 나왔다. 
C / C++ / Java 라는 대회 사용언어와 "Think / Create / Solve" 라는 대회의 슬로건을 잘 형상화 한 듯.

한편, 본 대회와 관련해서는 2 가지 article 에 대해서 써야 하는데...

2008 년 IT 대학생 프로그래밍 경시대회 ( 교내대회 )  2008/09/20

전국대학생 프로그래밍 경시대회 및 ACM-ICPC Asia Regional Contest 의 국내 예선,
ICPC Korea National Programming Contest, 2008/09/27

포스팅 거리가 자꾸 밀리는 군.. -0-

이올린에 북마크하기(0) 이올린에 추천하기(0)
http://soyoja.com/trackback/255 관련글 쓰기
댓글을 달아주세요!
이름 암호 홈페이지



구글에서 주최하는 프로그래밍 경시대회, Google Code Jam( GCJ )

의 아시아-
태평양 지역 결선이 오늘 열렸다.

오늘 정신이 없어서 결과를 조금전에서야 확인했는데, 금년의 구글

코드잼은
전세계에서 총 4만 5천명이 참가, Qualification Round 를

비롯하여 예선 3 라운드를 거쳐 최종 500 명이 전세계 3 개 지역

( 아시아-태평앙 / 북미 / 유럽-중동-아프리카 ) 에서 On-Site 결선을


치뤄 최종 100 명이 구글 본사에서 결승전을 치루는 방식이다.

아시아-태평양 결선 참가자는 총 152명, 약 20% 인 상위 36 명이

최종 결선에 진출하는데, 한국에서는 총 15 명이 참가하여, 2 명이 최종 결선에 진출했다.  ( JongMan 님과 Domeng 님 )

생각해보니 JongMan 님은 GCJ 3회 연속 결선 진출이다. ㅎㄷㄷ

최종 스코어 보드를 살펴보니, 최종 결선진출자들은 ACRush 를 비롯해서 온통 중국판이고, 일본애들의 약진도 눈에 띈다.


사진 가운데 빨간옷이 Astein 님, 왼쪽이 Altertain 님, Astein 님의 뒤쪽이 한국인 중에서 가장 성적이 좋았던 domeng 님,
안쪽에 정수리와 안경만 보이는 사람이 JongMan 님, 그 뒤의 뿔테안경 쓰신 짧은 머리 분이 Lewha0


출제된 문제를 살펴봤는데 아직 풀어야 할 문제들이 산적해 있는지라... -0- 나중에 시간나면 하나씩 자세히 봐야 겠다.

GCJ 의 시스템이 약간 변화하여, 대회가 종료된 후에 일정 시간이 지나면 Contest Analysis 라는 내용이 생겨 문제 분석과

공부에 큰 도움을 준다.

서명덕 기자님 의 GCJ 리포트 기사

참가자, JongMan 님의 후기

GCJ APAC local final Scoreboard

구글러 빼고 누구든지 환영합니다... 구글 윌리엄스 매니저 (신문기사)

PS) 왠일로 어제 블로그 방문객이 많이 늘었길래 왜그런가... 했는데 알고보니 서기자님의 GCJ 기사에 내 블로그가 언급되어

리퍼러가 좀 늘어난 것 같다. ㅋ

이올린에 북마크하기(0) 이올린에 추천하기(0)
http://soyoja.com/trackback/251 관련글 쓰기
댓글을 달아주세요!
이름 암호 홈페이지



오늘 알고리즘 수업을 듣다가 Time Complexity 계산방법에 대한 강의 중에 누군가 수업시간에 한 질문,
"우리가 흔히 nlogn 정렬이라고 말하는 퀵 소트의 경우 Worst Case 는 O(n^2) 이 된다. 교수님이 설명하시길 알고리즘의 시작복잡도는 Worst Case 를 기준으로 측정한다고 얘기했는데 퀵소트는 Average Case 를 기준으로 할 때만 O(nlogn) 이 되는 것인데, 그렇다면 과연 퀵 소트를 O(nlogn) 정렬이라고 정렬이라고 부르는 것이 맞는가?"

참고로, 머지 소트(Merge Sort) 와 힙 소트(Heap Sort) 의 경우 Worst Case 에서도 O(nlogn) 에 수행된다.

당시 알고리즘의 Time Complexity 는 Worst Case 를 기준으로 측정한다고 설명하던 강사도 이 질문에 살짝 당황해서 좀 버벅이다가 실제 상황에서는 Average Case 를 대상으로 적용하는 경우가 많기 때문에 퀵 소트를 nlogn 정렬이라고 본다고 설명했다.

평소에 당연히 퀵 소트는 O(nlogn) 이라고만 생각하던 차, 이 질문을 듣고 나도 의문이 생겨서 집에 와서 CLRS 책을 다시 뒤져보았다.

"Quicksort is a sorting algorithm whose worst-case running time is O(N^2) on an input array of n numbers, In spite of this slow worst-case running time, quicksort is often the best practical choice for sorting because it is remarkably efficient on the average: it's expected running time is O(nlogn), and the constant factors hidden in the O(nlon) notation are quite small. It also has the advantage of sorting in place and it works well even in memory environments.

그러니까, Quicksort 는 O(nlong) 에 숨어있는 상수 계수의 크기도 작고, 내부 정렬이며, 평균적으로 가장 빠르게 수행되는 정렬이며, 가상메모리 상에서도 잘 동작하는 일반적으로 가장 좋은 정렬이다는 이야기. partition 의 깊이 logn 과 각 partition 에서의 비교횟수 n 번이 수행되어 Average Case 는 O(nlogn), n-1 과 0 으로 partition 되는 경우 Worst case O(N^2) 이 된다.

결론적으로 Worst-case 가 알고리즘의 시간복잡도를 평가하는 절대적인 기준은 아니란거네..

Average Case 는 대개 계산하기도 힘들고, 현실에서는 입력되는 값의 정확한 분포를 알기 어려우므로 쓰기 힘들다. 
Worst Case 는 알고리즘의 성능을 보여주는 척도가 될 뿐만 아니라 경험적으로 알고리즘의 수행시간은 Worst Case 인 경우의 수행시간과 큰 차이가 나지 않기때문에  일반적으로 알고리즘의 시간복잡도를 말할때는 Worst-Case 기준으로 평가한다.
"어떤 알고리즘의 시간복잡도가 O(n^2) 이라면 이 알고리즘은 최악의 경우 n^2 만큼 수행한다." 는 의미가 된다.

결론적으로 강사가 이런 부분을 명확하게 설명을 안해준거네 -0-
이올린에 북마크하기(0) 이올린에 추천하기(0)
http://soyoja.com/trackback/248 관련글 쓰기
댓글을 달아주세요!
  1. BlogIcon rubyeye 2008/09/16 09:29  댓글주소  수정/삭제  댓글쓰기

    지나가다가 글 하나 올립니다 ㅋ
    quick sort도 worst case O(nlogn)알고리즘이 맞습니다.
    문제가 되는 것이 quick sort에서 각 단계마다 최적의 key값(중앙값)을 O(n)안에 찾을 수 있느냐인데
    k번째 큰 값을 찾는 알고리즘이 O(n)이므로 가능합니다. 따라서 quicksort도 worst case O(nlogn)이 됩니다.
    문제는 이런 식으로 key값을 찾으면 앞에 붙는 상수값이 커져서 practical하게는 더 느려진다는 점이죠...
    즉, quicksort는 이론적으로 worst-case O(nlogn)입니다만, 실제로 사용할 때는 빠른 속도를 위해서
    worst-case O(n^2)이 되더라도 대충(-_-; ) 키값을 찾게 된다는 거죠... 참고하시기 바랍니다 ^^

  2. 고글 2008/09/25 23:45  댓글주소  수정/삭제  댓글쓰기

    형 저도 지나가다가.. 글 씁니다.

    요점을 다 빗나게가 쓴 것 같아서..
    Quick sort의 worst case는 O(N^2) 입니다. 오름차순 혹은 내림차순으로 정렬 되어 있을때 그렇게 되겠죠.
    데이타를 많이 돌려보았을때 최악의 경우에서 Mergesort와 Heapsort 다 O(n log n)을 보장하지만
    실제로 데이타를 돌려보면 Quick sort가 가장 빠른 결과값을 나오게 합니다.

    Notation상 분명 Quicksort가 Mergesort나 Heapsort보다 확실히 느려야 하는데 그렇지 않는것은 하드웨어레벨에서 그문제가 발생하는거지요.

    이유는 지역성(Locality) 특성 때문입니다.
    "가상메모리 상에서도 잘 동작하는 일반적으로 가장 좋은 정렬이다는 이야기. "
    이게 locality를 잘 반영했다는 얘긴데.
    지역성에는 locality는 두가지가 있습니다.
    시간지역성과 공간지역성이 있는데 여기에서는 공간지역성을 잘 반영했다라고 이해하시면됩니다.
    시간지역성은 한번 나왔던 애가 다시 또 나올 가능성이 높다는것이고,
    공간 지역성은 한번 발생한곳 주위에서 또 발생할 가능성이 높다는것입니다

    Quicksort를 시뮬레이션 해서 잘 관찰해보면 pivot 주변에서 데이타의 위치 이동이 빈번히 발생하게 됩니다.
    메모리에 데이타를 올리고, 캐쉬에 저장해놓고 쓸 때에, 메모리와 캐쉬 hit rate를 생각해보면 Quicksort가 빠릅니다.

    - 컴구조책 메모리파트에서 이렇게 이유를 밝히고 있습니다.

    P.S. 대학원준비한다고 책 처음부터 끝까지 다 봤더니, 몰랐었던 내용도 많이 알게 됐습니다.

    • BlogIcon soyoja 2008/09/26 14:33  댓글주소  수정/삭제

      오.. 그렇구나.
      지난 학기에 OS 수업들으면서 Locality 와 cache hit ratio, Page fault 에 대해서 열심히 공부한 기억이 나는구낭.. ㅋ

  3. 김대현 2008/10/22 22:01  댓글주소  수정/삭제  댓글쓰기

    저기..질문좀 할께요

    다항시간(다차시간: Polynomial-time) 라고 나오는데요

    정의를 확실하게 잘 모르겠네요...

    식으로 O(n^2)에서요 O는 뭐고 n은 무엇을 뜻하는 건가요??

    정말 어렵네요..ㅡㅡ;;

    답해주시면 정말 감사하겠습니다.

    kdhenjoy@naver.com

  4. 김대현 2008/10/24 12:33  댓글주소  수정/삭제  댓글쓰기

    감사합니다...근데요 또 궁금점이 있는데요~

    O가 문제 걸리는데 최악의 시간이라는데

    그 시간의 결정은 어떻게 하나요?

    O표기법도 다양하던데..어떤때에 어떤걸 써야 할지...잘 모르겠네요...

    NP Problem을 공부하다가 다항시간이 나와서 이리저리 알아보고 있는데

    정말 어렵네요..ㅠㅠ

    여기 BIG-O표기법은 식이 주어져 있을때 푸는게 맞나요??

    아니면 문제가 주어졌을 때 식으로 전환해서 푸시나요?

    학과 과목도 아니고 처음 배우는 거라서요..ㅠㅠ

    쉽게 기초부터 설명 되어있는 책좀 추천좀 해주세요..ㅠㅠ

    감사합니다

    • BlogIcon soyoja 2008/10/25 10:06  댓글주소  수정/삭제

      시간복잡도 계산하는 점근적 표기법은 여러가지가 있는데 언제 어떤걸 쓸지는 저도 잘 모르겠네요 -0-
      일반적으로 알고리즘 책에서 Big-O 기준으로 많이 설명하고 저 강의에서도 Big-O 기준으로 설명해서 Big-O 를 예로 든 것 뿐입니다.
      NP 문제나 점근적 표기법을 이해하는데는 제가 읽어본 책들 중에서는 "쉽게 배우는 알고리즘" (문병로 저) 가 매우 좋았습니다.

  5. BlogIcon JM 2008/11/22 15:13  댓글주소  수정/삭제  댓글쓰기

    제가 요즘 시간 복잡도 관련 챕터를 쓰면서 깨닫게 되었는데요, Worst Case 와 Big-O notation 이 밀접하게 연관되어 있어서 사람들이 착각하기 쉬울 뿐, 알고리즘의 시간 복잡도를 평가할 때 항상 최악의 경우를 기준으로 삼는 것은 아닙니다.

    일단 잘 아시다시피 Big-O notation 은 어떤 함수가 주어질 때 그 함수의 상한을 표기하는 방법이죠. (상수 범위 내에서..) 그래서, 크기가 n 인 입력을 해결하기 위한 알고리즘의 수행 시간을 f(n) 라 할 때, f(n) = O(n^2) 이라고 쓰면 실제로 최악의 경우 알고리즘의 시간 복잡도를 나타내게 됩니다. 때문에, 사람들이 알고리즘의 수행 시간을 최악의 경우로 평가한다고 생각하기 쉽죠.

    하지만, 실제로 Big-O notation 은 시간 복잡도의 표기를 간단하게 하기 위해 도입한 방법일 뿐, 알고리즘의 최악의 경우에 대한 시간을 측정하기 위해 도입한 방법은 아니죠. 따라서, Big-O 가 항상 '최악의 경우' 와 연관되어 있다는 직관은 잘못된 것이라고 생각해요.

    퀵소트의 경우, 실제 실행 시간 f(n) 을 보는 것이 아니라 수행 시간의 기대값 (expected running time) g(n) 을 대신 보게 되지요. 이 때 f(n) 의 최고차항과 g(n) 의 최고차항이 각각 n^2 이고 nlgn 이기 때문에 최악의 경우엔 O(n^2), 기대값은 O(nlgn) 이라는 말은 완전히 정당한 것이라는... ^^

    저도 한 때 "Big O 표기법은 최악의 경우를 표기하는 거라는데 왜 퀵소트가 nlgn 이지 -_-" 헷갈려 하던 때가 있었어서.. 사족을 덧붙여 봅니다.

    덧) 구글에 worst case time complexity 를 쳐보니 이 블로그가 2번에 뜨더라고요. 그래서 와서 리플 달아 봤습니다. ^^;

    덧2) 그리고 실제로 대부분 많은 알고리즘의 경우에는 expected running time 과 worst running time 의 order 가 같습니다. 머지소트나 힙소트의 경우에는 n 이 주어졌을 때 실행 시간 함수 f(n) 이 deterministic 하게 결정되기 때문이고.. 선형검색 같은 경우에도, 중간에 찾았을 경우 곧장 리턴하는 방법을 쓰더라도, expected time 은 n/2 이고 worst time 은 n 이니까, O(n) = O(n/2) 죠? ㅎㅎ

    지하철에서 원고하다 장문의 리플을 달아 봤습니다 -_-;

  6. 짱강 2008/12/27 01:11  댓글주소  수정/삭제  댓글쓰기

    전산에서 최악의 경우인 빅O는 굉장히 중요한 의미를 시사한다.
    빅O는 특정 행위를 수행하는데 특정 시간안에 수행됨을 보장함을 의미한다.
    즉, 평균적인 타임이 N에 비례하는 것과 NlogN에 비례하는 두개의 알고리즘이 있다고 하자.
    이로써는 해당 행위가 언제 끝날 수 있는지 보장되는 것은 아니다.
    반면 최악의 경우 N^2과 NlogN에 비례한다고 하면
    이는 해당 행위가 언제 끝날 수 있는지가 보장이 된다.
    즉, 퀵 소트는 평균적으로 NlogN에 비례하는 다른 소트(힙, 병합, 기수)보다 상대적으로 빠를 수 있지만
    최악의 경우(어느 정도 정렬되어 있는 자료 혹은 어느 정도 역순 정렬되어 있는 자료)의 경우 N^2에 비례하는 속도를 낸다.
    즉, 자료가 어떤 성향이냐에 따라 수행 속도의 차이가 크다는 것이다.
    결론적으로 퀵소트는 최악의 경우 NlogN에 비례하는 (힙, 병합,기수)정렬보다 빠르다고 얘기할 수 없다.

이름 암호 홈페이지



출처 : Asia Director CJ Hwang 교수의 블로그

Special Rules for Contest Sites in China

ACM-ICPC Council China has passed several resolutions for contests in China.
Asia Director had approved the following items applicable only in Mainland China.

ACM-ICPC 의 Asia Regional Contest 에는 중국지역에서만 적용되는 특별 규칙이 있다.

(1) A team is not allowed to advance to World Finals from a contest site where the team’s university is a host. However, that host university may receive some priority consideration if their teams’ ranking in other site is very close to the World Finals qualifying line.
주최 대학 소속의 팀이라고 해서 세계 결선에 출전이 보장되지는 않는다. (ACM-ICPC 의 세계결선 와일드카드 규정 중 대회를 주최한 학교에서 와일드카드를 사용하여 세계결선에 나갈 수 있는 규정이 있는데, 중국에서 이 규정을 남용하여 수준 이하의 팀들이 세계결선에 출전하는 것을 방지하기 위해 만든 규칙인 듯) 단, 주최 학교의 팀이 세계 결선 커트라인에 근접한 수준의 성적을 거둔 경우에는 세계 결선 진출팀 결정시 고려대상이 될 수 있다.

(2) A team is not allowed to advance to World Finals from a contest site if the problem creation of the site is helped by a faculty from the University of that Team.
세계 대회에 출전하는 팀이 만약 동일 학교의 교수진으로 부터 출제된 문제를 푸는 경우에는 세계 결선 참가를 불허한다. ( 치팅을 방지하기 위한 규정인 듯. 굳이 이런 규정을 만들어 놓은 것을 보면 문제가 유출된 사례가 있었나봅니다 )

(3) The 2008 Asia Hefei site is a special contest site. Universities who have advanced to World Finals in the last five (5) yeas are not allowed to register in this special site.
2008 아시아, 합비 지역 대회는 특별 대회로, 최근 5 년간 세계 결선에 참가했던 학교는 이 지역대회에 참가할 수 없다. ( 오오.. 매번 나가는 학교만 세계 결선에 나가는 독식현상을 막기 위해서 이런 규정을 만든 건가요. 만약 해외팀도 동일한 규정이 적용된다면 한국팀들 중에서 해외 원정을 가는 팀은 이 지역에서 출전하는 것도 고려해 볼만 하겠군요 )

(4) All Asia Regional Contest hosts must have done National or Provincial contest before hosting the Asia Regional Contest.
모든 지역 대회는 전국 규모의 혹은 주 단위의 하위 대회를 개최해야 한다.
아시다시피 중국 지역의 경우 무수히 많은 학교들이 출전하기 때문에 ( 한 지역대회에 총 1600 팀이 참가한 경우도... ) 여러차례의 예선을 거치게 되어 있는데, 이 예선대회를 명문화 한 것으로 보입니다.

전 세계에서 ACM-ICPC 열기가 가장 뜨거운 곳이라 할 수 있는 중국지역대회의 특별규정을 읽어보는 것도 꽤나 재미있군요...
이올린에 북마크하기(0) 이올린에 추천하기(0)
http://soyoja.com/trackback/243 관련글 쓰기
댓글을 달아주세요!
  1. BlogIcon Megalusion 2008/10/03 15:28  댓글주소  수정/삭제  댓글쓰기

    한국인이라 다행인건가요ㅋㅋㅋ

이름 암호 홈페이지



(원문) Wait List to Host ACM-ICPC Asia Regional Contests

ACM-ICPC 대회의 Asia 지역 총책임자 (director) 인 CJ Hwang 교수의 블로그에서 찾은 글입니다.

ACM-ICPC Asia 지역대회는 매년 그 규모가 증가하면서, 아시아 각국에서 대회를 유치하려는 움직임도 활발합니다. 한국이 처음으로 ACM-ICPC 를 개최했던 2000 년만 해도 아시아 지역에서 개최된 Reigonal Contest 는 8 개에 불과했는데, 현재는 15개에 이르고 있습니다.

이런 연유로 향후 수년간 아시아의 인접한 지역간에는 국가별로 ICPC 대회를 순환 개최하려는 듯 합니다.

Indochina Peninsula: (인도차이나 반도)
2008 Vietnam (Ho-Chi-Minh City)
2009 Thailand (Prince Songkla Univ- Phuket)
2010 Vietnam

베트남은 국제정보올림피아드, 국제수학올림피아드등에 많은 관심을 갖고있는 국가로, ACM-ICPC 에서도 최근 2년간 계속해서 World Final(이하 세계결선) 에 팀을 출전시키고 있습니다. 하지만 역시 참가 규모가 크지 않은탓에 인도차이나 지역으로 묶여서 이웃나라 태국과 순환개최를 하는듯 합니다. 상대적으로 경제적 형편은 더 낫지만 아직 ICPC 의 불모지인 태국에서 2009 년에 최초로 ICPC 를 개최할 듯 합니다.

Southeast Asia  (동남아시아)
2008 Malaysia (International Islamic University Malaysia)
2009 Philippines (Ateneo de Manila University)
2010 Malaysia (International Islamic University Malaysia)

필리핀은 2005/2006 2년간 ICPC 대회를 개최했으나 열악한 대회 환경과 별로 좋지않은 문제로 평이 나빴던 지역이었습니다. 세계결선에도 Ateneo de Manila University 가 2005 년과 2006년 2번 출전하지만 좋은 성적을 거두지 못해서인지 결국 2007 년 부터는 인근 국가인 싱가폴, 말레이시아 등에게 개최권을 박탈당했는데, 2009 년에 다시 ICPC 를 개최 하는 듯 합니다.

Bangladesh/Pakistan/Afghanistan  ( 방글라데시, 파키스탄, 아프가니스탄 지역 )
2008 Bangladesh (Northsouth University)
2009 Bangladesh (Eastwest University)
2010 Bangladesh (Bangladesh University of Engineering and Technology)

방글라데시는 비록 경제적으로는 형편이 어렵지만 ICPC 열기는 매우 뜨거운 국가로 유명합니다. 방글라데시의 이공계 최고명문인 BUET(Bangladesh University of Engineering and Technology) 는 세계결선에 1998 년부터 지금까지 11 년 연속으로 진출했으며, 2008 년도 세계결선에도 방글라데시는 2 팀을 출전시켰습니다. 당분간 파키스탄이나 아프가니스탄에서 ICPC 가 개최될 가능성은 낮아 보이네요.

台湾 ( Taiwan, 대만)
2008 国立台湾大学
2009 国立交通大学
2010 国立中山大学(!)
2011 国立政治大學
2012 中華大學 (新竹)

대만은 1990 년대부터 꾸준히 ICPC 를 개최했던 유서깊은 지역입니다. 매번 중국팀이 와서 World Final 출전권을 뺏어가는 와중에도 지속적으로 World Final 에 자국팀을 출전하고 있으며, 대회 수준도 높은 것으로 알려져 있습니다. 대만 역시 다른 국가에 ICPC 개최권을 뺏길 일은 없어 보입니다.

중국 5 개 지역 - 국가차원의 대대적인 지원과 관심속에서 중국 지역의 ICPC 대회는 하루가 다르게 성장하고 있습니다.

东北:(Norheast China, 동북지구 - 중국 동북부 )
2008 哈尔滨工程大 (하얼빈 공정대학)
2009 哈尔滨工大 (하얼빈 공업대학)
2010 哈尔滨工程大 (하얼빈 공정대학)
2011 大连理工 (대련 이공대학)
2012 东北师大(长春) (동북 사범대학)
2013 吉林大学 (길림대학)

华北:(North China, 화북지구 - 중국 북부 )
2008 北交大 (북경교통대학)
2009 北邮大 (북경우주대학)
2010 天津大 (천진대학)
2012 北航大 (북경항공대학)

华中/华南 (Central and South China, 화중/화남 - 중국 중남부)
2008 中国科大 (Special Site)
2009 武汉大学 (WuHan University)
2010 福州大学 (푸저우대학)
2011 厦门大学,华中师大 (샤먼대학, 하문대학)
2012 华中科大 (화중과학대)

华东:(East China, 화동 - 중국 동부 )
2008 杭州电子 (항주전자대학)
2009 东华大学(上海) (화동대학)
2010 (Site At Large) 国防科大 (국방과학대)
2011 华东师范 (화동사범대학)
2012 复旦大学 (복단대학)
2013 南航大 (남항대학)
2014 南京理工 (남경이공대학)

华西 :(West China, 화서 - 중국 서부 )
2008 西南民族大 (서남민족대학)
2009 (Site At Large) 浙大宁波理工学院 (절강영파이공학원)
2010 西华(成都 ) /西南石油大 (서남석유대학)
2011兰州交通大学 (란주교통대학)

Other Areas:
Iran, India / Nepal / Srilanka (Kanpur, Amritapuri), Indonesia, Japan, and Korea (N&S):
Rotation among Universities in each of these countries
is by applications or by default.

이란 / 인도-네팔-스리랑카 / 인도네시아 / 일본 / 한국(남북한 포함) 이상 5 개 국가는 각 국의 대학들이 번갈아가면서 대회를 개최한다. 즉, 이란 / 인도 / 인도네시아 / 일본 / 한국 지역은 매년 고정적으로 ICPC 개최를 보장한다는 뜻도 되겠네요.  ( 네팔, 스리랑카는 인도와 묶여있기는 해도 인도에 밀려 ICPC 대회 유치하기는 쉽지 않을듯 합니다 )

이란은 좋은 성적에도 불구하고 불안한 중동 정세때문에 World Final 에서는 비자 문제로 참가하지 못하는 경우가 많은 아픔을 지닌 국가입니다. 2008 년 세계 결선에서는 Shrif University of Technology 가 세계 13위, 아시아 팀들 중에서는 2위를 차지하는 좋은 기록을 남기기도 했습니다.

인도는 IT 강국답게 많은 학교가 참가하는 ICPC 열기가 뜨거운 국가입니다. 지금도 그런지 모르겠는데, 예전에 CJ Hwang 의 강의(?) 에서 인도의 ICPC 대회에서는 시골 학교에서 대회 참가를 위해 3일 동안 열차를 타고온다는 이야기를 들은 기억이 나는군요. 넓은 영토때문인지 북부(Kanpur) 와 남부(Amritapuri) 지역 두곳에서 대회가 치뤄집니다.

ardiankp 가 생각나는 인도네시아는 자국에서 ICPC 가 개최되지 않았음에도 불구하고 최근 2 년 연속으로 세계결선에 Bina Nusantara 가 출전하는 기염을 토하더니 마침내 고정적으로 ICPC 대회 유치까지 성공했네요.

일본 역시 ICPC 성적이 뛰어난 국가입니다. 일본은 매년 대학별 / 지역별 순환개최의 원칙을 지키면서 많은 홍보를 통해 자국 내에서 ICPC 열기를 일으키고 자국팀의 전반적인 수준을 향상시키는 데 성공한 것으로 보입니다. ICPC 대회가 일본에서 개최된 이래 2006 년까지 일본 지역대회의 1 등은 매번 외국팀이 차지했지만, 2007 년 처음으로 자국팀(Kyoto University) 이 우승하였습니다. 일본 지역의 또다른 특징은 일본 국내예선에서의 압도적인 동경대 파워입니다.

한국은 2000 년 ICPC 대회를 최초로 유치한 이래, 매년 KAIST 가 주관하며 2001 년 부터는 정통부 후원의 대학생 프로그래밍 경시대회를 겸한 대회로 치루면서 정통부와 IT 기업들의 지원하에 꾸준히 대회를 성장시키고 있습니다. 특히 지리적으로 중국과 가까워서 매년 중국팀이 원정을 옴에도 불구하고 (일본과는 대조적으로) 2005 년 대회를 제외하고는 한번도 외국팀에 챔피언 자리를 내주지 않고 있는 상당히 빡센 지역으로 표현됩니다. ㅎㅎ
이올린에 북마크하기(0) 이올린에 추천하기(0)
http://soyoja.com/trackback/242 관련글 쓰기
댓글을 달아주세요!
  1. BlogIcon Josh 2008/09/08 20:49  댓글주소  수정/삭제  댓글쓰기

    "이란 / 인도-네팔-스리랑카 / 인도네시아 / 일본 / 한국(남북한 포함) 이상 5 개 국가는 각 국의 대학들이 번갈아가면서 대회를 개최한다"

    좀 다른데서 개최좀 해줬으면 좋겠는데말입니다?

    • BlogIcon soyoja 2008/09/09 02:41  댓글주소  수정/삭제

      우리나라도 일본처럼 ICPC 대회 저변이 더 넓어지려면 여러 대학에서 순환개최 하는 것도 좋은 방법일듯 합니다. ^^

이름 암호 홈페이지