posted by 방랑군 2012. 1. 7. 15:57

알고리즘 공부하기 [정보 올림피아드 & 알고리즘]
http://www.jungol.co.kr/site/

출처 : http://jeminency.egloos.com/3193932

검색 사이트

http://www.koders.com/
http://www.google.com/codesearch

코드 검색 사이트입니다. 원하는 함수 이름 같은 것을 입력하면 해당되는 소스 파일을 보여주는 식입니다. 물론 모두 오픈소스 소프트웨어들입니다. 함수의 실제 용법을 찾아보거나 할 때는 도움이 되지만... 저는 제 리눅스 계정에 관심있는 오픈소스 패키지들의 소스를 몇십개 갖고 있기 때문에 거기서 find & grep이나 cscope로 찾는 편입니다.


코딩 문제 사이트

프로그래밍 올림피아드라고도 해야 되나... 코딩 문제를 푸는 사이트들입니다.

http://ace.delos.com/usacogate

여기는 과정별로 친절하게 진도를 나가는 스타일입니다 -_-
챕터 1은 좀 쉬운 문제들이고, 그 다음 챕터는 좀 어려운 문제들이고, 그런 식입니다.
문제 풀이는 C/C++, Pascal, Java로 가능합니다. 문제는 입력 파일이 주어지는데 문제에 맞게 입력에 해당하는 출력을 내는 식으로 (원하는 언어로) 코딩을 하여 서브밋하면 서버에서 컴파일하고 테스트하여 결과를 알려줍니다.
제한이 좀 있는데 메모리를 5M 이상 쓰면 안된다거나 실행 시간이 5초 이내여야 된다거나 하는 등입니다.

http://online-judge.uva.es/problemset/

위와 비슷한 사이트이지만 만여개의 문제 중 원하는 걸 풀어볼 수 있습니다. 사용자도 위의 사이트보다는 훨~~씬 많습니다. 거의 이 분야의 공식 사이트라고 보시면 됩니다. 언어는 역시 C/C++, Pascal, Java 등이 가능합니다만...
위의 usacogate 사이트보다는 좀 불친절합니다 -_- 서버에서 테스트시 어떤 입력 데이터를 사용하는지 사용자가 알 수 없다는 점 때문인데 그런 면에서 좀 더 어렵지만 도전해 볼 가치가 훨씬 많지요. 왜 틀렸는지 가르쳐주면 디버깅이 아무래도 많이 쉬워지니까요.

http://codegolf.com/

여기는 문제에 도전해본다는 점은 비슷하지만 위의 두 사이트와는 차원이 좀 다릅니다 -_-;
입력과 출력을 맞게 짜는 것은 동일하다고 할 수 있는데 알고리즘을 따지는게 아니라 소스 코드의 길이를 따집니다. 스페이스, 엔터까지 1바이트를 잡아먹으므로 가독성 따위는 모두 배제하고 최대한 함축된 코드를 짜는 것이 목적입니다.

그래서 여기서는 컴파일 언어를 받아들이지 않고, 스크립트 언어만을 씁니다. 가능한 언어는 Perl, PHP, Python, Ruby의 네 가지입니다.
문제에 따라서는 한 줄로 짜는 사람도 많습니다. 절대적인 강자는 물론 Perl이죠. 다음으로는 Ruby인걸로 알고... C와 비슷한 문법의 PHP나 라인 구분이나 들여쓰기가 엄격한 편인 Python은 사실 불리한 편입니다 -_-;

영어 사이트라 감이 안 오실 수 있는데 이 곳의 문제에 대해 KLDP에 글이 올라와서 인용합니다.

내용을 간단하게 요약하면

(x, y, 문자)쌍 여러개를 입력받아서 정확한 위치에 출력하는 문제입니다.


저의 코드 :
[*$<].map{|s|a=s.split.map{|x|x.to_i};($*[k=a[1]]=$*[k].to_s.ljust 1+k=a[0])[k]=a[2]};puts$*


92바이트로 현재 (루비 부문)19등입니다.

스트링으로 이루어진 배열을 이용했는데요..

이 코드를 좀 더 줄일 수 있을까요??


이런 걸 하면서 노는 사이트입니다 -_-
원래대로는 라인을 나눠야겠지만 '\n'의 바이트를 줄이기 위해서 저런 식으로 짭니다.
저 코드가 궁금하시면 Ruby를 공부하세요 -_-;


그 외

오픈 소스 프로젝트들을 볼 수 있는 사이트들입니다. 다르게 말하면 다른 사람들이 짠 소스를 볼 수 있는 곳이기도 하죠. 이건 정말 큰 축복입니다.

http://sourceforge.net/ : 굳이 설명이 필요없을 정도
http://kldp.net/ : 국내 사이트. 아시는 분도 많겠지만...
http://www.gnu.org/ : 그 유명한 GNU 사이트. gcc, emacs, glibc 등 주옥같은(?) 오픈소스들의 본산.
http://rubyforge.org/ : 루비 프로젝트들이 주로 등록되는 사이트.

그리고 더 이상 생각나는게 별로 없군요. 마지막...

http://robocode.sourceforge.net/

자바로 탱크의 인공지능을 프로그래밍하여 겨루는 사이트입니다. 예를 들면 전진하면서 적을 스캐닝하다가 적을 발견하면 어떤 쪽으로 피하고, 공격을 받으면 어떤 식으로 대처하고 하는 등등을 미리 프로그래밍 해놓는겁니다.
탱크끼리의 전투는 그 로직에 따라 완전 자동으로 이루어지고요. 문제풀이가 위주인 저 위의 사이트들과 달리 게이머의 로직을 직접적으로 겨룬다는 점에서 흥미있습니다(비슷한 류의 다른 사이트도 있었던 거 같은데 기억이 잘...-_-).

...다 쓰고 보니 유명한 곳들 뿐이라 그닥 도움이 될 지는 모르겠군요 -_-;;

'PP > 번외' 카테고리의 다른 글

C# <-> VB.net 코드 변환 사이트  (0) 2012.01.08
C# VS JAVA ~!~!~!  (0) 2012.01.04