[책] 알고스팟 "알고리즘 문제 해결 전략" Develop Tip

어떤 새로운 프로그래밍 언어가 있을 때,
그것을 잘 익히는 특별한 왕도가 있을 것 같지는 않습니다.
처음에는 신택스를 잘 익히고 배운 다음, 그것을 실제로 활용하여
자신의 것으로 익숙해질 때까지 사용해 보는 것이 바로 왕도라 감히 말할 수 있습니다.

문제 해결에 대한 푸는 접근 방법론을 설명하더군요.

저자는 지그소 퍼즐에 비유를 했던데 아무리 훌륭한 퍼즐을 암기하고
있다고 하더라도 그것을 제대로 정확한 위치에 놓이지 않으면 쓸모없다고 하였듯이,
제가 생각하기에도 아무리 영어 단어를 많이 알고 있다고 하더라도
실제로 문장을 만들고 자신의 생각을 글로 표현하는 것은 또 다른 영역의
훈련이라 생각합니다.
비단 영어 뿐만 아니라 바둑도 마찬가지 입니다. 아무리 포석, 정석을 
외우고 있다고 하여도 실전에서는 암기하지 않는 활용과 전투가
나오기 마련이니 노련한 전투경험이 도움이 될 것입니다.

지금껏 영어를 많이 공부해도 실제 사용하는 법이 약한 것이 대부분이 것처럼
프로그램밍도 실제 사용 언어의 신택스와 스니핏을 많이 외우고 있다고 하더라도
실제로 문제를 풀고 익히는 연습을 많이 하지 않는다면
실전에는 자기것으로 소화시킬 수 없다고 봅니다.

그런 관점에서 알고리즘 해결에 대한 접근 방법은,
실전을 하듯이 프로그래밍을 해 볼 수 있는 연습을 하는데
도움을 많이 줍니다.

만약 제가 컴공과를 이제 들어갔거나 아니면 컴공 전공을 하려고 마음먹고 있는 나이라면
꼭 볼 필요가 있다고 봅니다.
혹은 처음 새로운 언어를 배운다고 할 때, 저희가 "Hello World!"를 문자열로 출력하듯이
쉬운 알고리듬부터 구현을 해 보면 가장 빠르게 새로운 언어를 습득하는 방법이 될 수 있을 것 같습니다.

...

저자가 이 책을 쓰면서 알고스팟 이라는 알고리즘 해결 사이트를 오래전부터 운영해 왔더군요.

간단히 이야기하면,
여러 사람들이 다양한 알고리즘 문제를 내고 또 같이 풀어볼 수 있는 사이트 입니다.

간단히 처음 등록부터 이용할 수 있는 방법을 기술해 봅니다.

처음 접속을 하면 위와 같은 뉴스가 보이는데, 좌측 상단에 회원가입을 합니다.

좌측에서 튜토리얼을 선택합니다.
가끔 영어로 되어 있는 문제도 있지만, 대부분 한글로 쉽게 설명되어 있어서 어렵지 않게 문제를 이해할 수 있습니다.
위에 알고리즘 책에도 설명이 되어 있고 중고등학교 때 선생님들에게도 한두번씩을 들어 보았을 만한 것인데,
바로 문제를 제대로 이해하지 않아서 틀리는 경우가 의외로 많이 있습니다.
문제가 쉽다고 해도 잘못 이해했다면 틀릴 확률은 상당히 높습니다.

튜토리얼에서 첫번째의 "알고스팟 온라인 저지/첫 번째 문제 풀기"를 선택합니다.

역시나 HelloWorld 입니다.
모든 알고리즘 문제는 샘플 입력이 주어지고 알고리즘을 원하는 언어로 작성한 다음,
그것을 소스로 제출하여 맞았다 안 맞았다를 판정 받으면 되는 것입니다. (참 쉬죠잉~?)

대신 사람이 푸는 것이 아니므로 이 문제를 푸는데 걸린 시간 제한이 있습니다.
1000ms 라는 제한이 있으면 1초 안에 결과가 나와야 하는 것이지요.

위에서 본문 중, HELLOWORLD 라는 것을 눌르면, 

위와 같이 실제 알고리즘 문제가 나옵니다. 출제자가 보이는데 나중에 실제 문제로 내실 수 있답니다. 학생에서
선생님으로 문제를 제출해 볼 수도 있겠지요?

문제는 어렵지 않습니다. 예제처럼 5명이 주어지고 다섯명의 이름이 나오면 그것을 표준출력으로 아래와 같이
출력하는 것입니다. 대신 주의할 것은 텍스트 결과를 문자열 diff 와 같은 것으로 정답 확인을 하므로 공백문자나
점, 콤마 등도 잘못 입력하면 틀리다고 결과로 나옵니다.

실제 알고리즘 책에서 확인해 보면 두세명이 한 조가 되어 컴퓨터 하나로 문제를 푸는 경우
디버깅을 해 복 있을 수 있는 시간이 거의 없으므로 눈으로 디버깅한다는 이야기가 나옵니다만,
실제로 새로운 언어를 배울 것 같으면 그럴 필요까지는 없을 듯 합니다.

알고스팟의 온라인 저지는 우분투 12.04로 돌리고 있다고 합니다. 그래서 그 안에서 설치되어 있는
(혹은 설치되는) 프로그래밍 언어를 지원하는데 다음과 같은 언어들이 있습니다.

이 중, 파이썬을 예로 들어 보겠습니다.

파이썬에 대한 장점은 이전에도 여럿 기술해 보았습니다만,
처음 프로그래밍을 접하는 사람이 배우면 좋은 언어가 파이썬이라 대가들이 이야기 하고,
알고리즘을 작성하였을 때 제일 슈도코드처럼 readability 나은 언어 중 하나입니다.

파이썬을 예로 들어 작업을 해 보겠습니다.

파이썬을 개발하는데 제일 좋은 IDE 중의 하나인 PyCharm (3.0 버전)을 이용하여 작성하였습니다.

한가지 오른편에 input.txt를 문제에서 copy 해서 가지고 있고, 그것을
터미널에서 

위와 같이 표준입력으로 입력을 받아, 표준출력으로 결과가 잘 나오는지 확인합니다.

파이썬 자체에 대한 것은 스스로 공부를 하시면 될 듯 하구요,

이제 답안 제출을 위하여,

위와 같이 우측 상단에 답안제출을 눌러 사용언어를 선택한 다음, 소스코드를 넣고 "제출하기"를 합니다.

그러면,

그러면 위와 같이 실행중 이라는 표시가 나타나는데, 몇 초 이후, 

왼쪽의 최근 제출된 답안을 눌러보면 위와 같이 정답 결과가 나오는 것을 알 수 있습니다.

참고로 위와 같은 온라인저지 사이트가 여럿 있는데,
백준 온라인 저지 라는 사이트도 유명합니다.

여기서는 각 언어별 작성 코드도 살펴볼 수 있어, 남이 짠 코드를 확인하고
새로운 것을 배우는데 많은 도움을 받을 수 있습니다.


어느 분께는 도움이 되셨기를 바랍니다~



덧글

  • 노란개구리 2013/11/24 14:24 # 답글

    오오 신기하네요. 혼자 공부하다보면 귀찮아서 문제같은 건 자꾸 제끼고 그냥 이론만 꾸역꾸역 습득해버리곤 어떻게 써야할지 막막한 경우가 종종 있는데 이런식으로 하는것도 꽤 재밌어보이네요. 좋은 정보 감사합니다 ㅎㅎ
  • 지훈현서아빠 2013/11/24 14:31 #

    도움이 되셨다니 저의 보람입니다~ ^^
댓글 입력 영역

구글애드텍스트