한빛출판네트워크

IT/모바일

TopCoder 탑코더 알고리즘 트레이닝

한빛미디어

번역서

절판

TopCoder 탑코더 알고리즘 트레이닝
좋아요: 35
  • 저자 : 타카하시 나오히로
  • 역자 : 윤인성
  • 출간일 : 2013-10-28
  • 페이지 : 492쪽
  • ISBN : 9788968480553
  • 물류코드 :2055

합계 : 22,500

  • 프로그래밍 실력은 하루 아침에 완성되지 않는다

     

    열정이 아닌 기초를 튼튼하게!
    프로그래밍은 열정이 아닌 실력으로 해야 한다. 실력의 기초는 알고리즘이며, 프로그래머의 문제 해결력은 알고리즘에서 판가름 난다. 알고리즘 실력을 키우는 가장 좋은 방법은 다양한 문제를 풀어보며 알고리즘을 적용해보는 것이다.

     

    알고리즘 트레이닝으로 완성하는 프로그래밍 실력
    알고리즘을 많이 안다고, 다양한 프로그래밍 언어를 사용할 줄 안다고 해서 프로그래밍을 잘 하는 것이 아니다. 수학 공식을 많이 알아도 문제를 풀어보며 연습하지 않으면 안 되는 것처럼 프로그래밍도 연습을 통해 문제 해결력을 키워야 한다. 알고리즘 트레이닝은 알고리즘이나 언어 사용법이 아닌 문제 해결력을 키우기 위한 훈련법이다.

     

    전 세계 프로그래머와 경쟁하는 탑코더
    탑코더의 알고리즘 대회는 SRM(Single Round Match)으로 주 1회 개최되며, 전 세계의 프로그래머가 이 대회에 참여한다. 75분간 문제를 풀이하고, 15분간 다른 사람의 버그를 잡는 도전으로 이뤄진다. 다른 사람의 버그를 잡아서 점수를 얻을 수 있고, 반대로 다른 사람이 여러분이 작성한 코드에서 버그를 찾아 감점할 수도 있다. 이렇게 시합 결과에 따라 점수가 매겨지고 등급이 매겨진다. 여기서 최고 등급을 레드 코더(red coder)라 한다. 이 책은 전 세계 프로그래머와 경쟁하는 탑코더에서 레드 코더가 되는 길을 안내한다.

  • [저자] 타카하시 나오히로

    1988년생이며 AtCoder 주식회사의 대표이사이다. 게이오대학 대학원의 정책학부미디어학과 재적 중이며 주요 실적으로는 Imagine Cup 2008 Algorithm 부문 3위, TopCoder Open 2010 Marathon 부문 2위 등이 있다.

    [역자] 윤인성

    출근하는 것이 싫어서 책을 집필하기 시작했습니다. 현재 직업 특성상 집에서 나갈 이유가 별로 없다는 것에 굉장히 만족하고 있습니다. 홍차와 커피를 좋아하며 기타, 가야금, 그림 그리기, 스컬핑 등이 취미입니다. 책의 소개말을 쓰는 시점을 기준으로 해서 이 책은 73번째 도서입니다.

    저서로는 『자바스크립트 프로그래밍 입문(2판)』(한빛아카데미, 2022), 『C# 프로그래밍(2판)』(한빛아카데미, 2021)과 『혼자 공부하는 파이썬(개정판)』(한빛미디어, 2023) 등이 있습니다. 역서로는 『내 코드가 그렇게 이상한가요?』(인사이트, 2023), 『이펙티브 코틀린(인사이트, 2022)』 등이 있습니다.

     

  • [01 | 프로그래밍 대회]
    01_ 프로그래밍 대회 
    02_ 대회 참가의 장점 
    03_ 초보 프로그래머에게 좋은 프로그래밍 대회 

     

    [02 | TopCoder 참가 방법]
    01 TopCoder 시스템 
    02 TopCoder 가입 방법 
    03 SRM 도전 
    04 SRM 참가 요령 

     

    [03 | 기본 프로그래밍 지식]
    01 반드시 필요한 프로그래밍 지식 
    02 추가적인 프로그래밍 지식 
    03 정리 

     

    [04 | 시뮬레이션]
    01 키위 주스 
    02 정리 

     

    [05 | 전체 탐색]
    01 즐거운 파티 
    02 암호 
    03 재미있는 수학 
    04 회문 
    05 친구 수 
    06 다양한 형태의 전체 탐색 
    07 고장난 로봇 
    08 미로 만드는 사람 
    09 마법의 숫자 
    10 정리 

     

    [06 | 계산량]
    01 실행 시간과 메모리 사용량 예측 
    02 정리 

     

    [07 | 동적 계획법과 메모화]
    01 동적 계획법 기본 
    02 회사 조직과 급여 
    03 나쁜 이웃집 사람들 
    04 킹 나이트 체스 
    05 악수 
    06 정리 

     

    [08 | 탐색 범위 한정 알고리즘]
    01 다양한 색상의 상자와 공 
    02 탐욕 알고리즘 
    03 주식 투자 시뮬레이션 
    04 배치 시스템 
    05 이분 탐색 
    06 자동차 대출 
    07 수학적 접근 방법 
    08 둥근 모양의 국가들 
    09 해밀턴 패스 
    10 정리 

     

    [09 | 응용 문제]
    01 바이너리 플립 
    02 칸토어 먼지 
    03 Not Two 
    04 막대 자르기 
    05 무한 수열 
    06 바닥 타일 
    07 정리 

     

    [10 | 그래프 문제]
    01 연결 판정 
    02 유향 그래프와 무향 그래프 
    03 가중 그래프 
    04 다익스트라 알고리즘 
    05 최소 신장 트리 
    06 변에 다양한 정보가 있는 그래프 
    07 정리 

     

    [11 | 수학 문제]
    01 소수 
    02 최대공약수와 최소공배수 
    03 정리

  •  

    • 책 알고리즘 설명은 재미있고 자세하게 되어있습니다만, 탑코더 사이트 자체의 문제들은 직접 도전하는 건 생각보다 많은 시간을 투자해야 되네요! http://shuaiharry.blogspot.kr/2013/12/topcoder.html

    • 매니아틱한 프로그래밍 경연 사이트에서 집단지성을 활용하는 기업 과제 해결을 하는 성공한 기업에 이르기까지, TopCoder Community (http://community.topcoder.com/tc)를 지탱해 온 핵심은 자동화된 투명한 채점 기준, 랭킹 시스템, 그룹 분배 시스템 등의 노하우가 담긴 온라인 대회 체계와 퀄리티 높은 알고리즘 문제들이었다.



      Topcoder 알고리즘 트레이닝은 이러한 퀄리티 높은 알고리즘 문제들을 난이도에 따라 분류하고, 일반적인 알고리즘 이론 중 문제 해결에 유용한 일부를 뽑아내어 문제를 푸는 방식에 녹여내어 설명하였다.



      Topcoder는 우리나라에서는 거의 알고리즘 매니아들만 이용하는 사이트이다. 프로그래밍 대회 정보나 알고리즘적인 사고에 대한 중요성이 잘 인식되지 않은데다가, 영어로 된 사이트이고, 가입해야 하는 양식이 꽤나 많은거에, 좀 오래된 웹 디자인과 자바 애플릿을 쓰는 것이 낯설다.





      이러한 점을 고려하여 책의 도입부에서는 프로그래밍 대회를 초보자들도 참여할 수 있게 독려하고, Topcoder의 시스템, 가입 방법, SRM이라는 대표 단기 대회에 참여하고 해당 툴 쓰는 법에 덧붙여 기본 프로그래밍 지식을 알려준다.



      SRM 시스템에 들어가보면 옛 프로그래밍 툴들의 향수가 나는 디자인이 드러난다. 음성 디자인에 어딘가에 접속하는 듯한 느낌이 드는 첫 화면.



      잘 접속한 후에는 수준별 그룹 분배를 하고 경쟁 시간대와 비경쟁 시간대에 따라서 메뉴가 구분된다.



      Topcoder는 Division1과 2로 그룹이 나뉘는데, Division 1은 일정한 rank를 넘어야 진입할 수 있는 권한이 부여된다. 각 Division에서는 출제되는 문제가 각각 3개인데, 정확히 초급, 중급, 고급의 난이도 하나씩이다.



      이 책에서는 초반 내용으로 Division 2의 초급 난이도 문제들에 대해서 넓은 이해를 하고 들어간다.



      시뮬레이션, 전체 탐색, 시간(걸리는 시간)/공간(메모리 할당) 예측 계산 이라는 큰 주제로 엮어간다. 앞의 두가지 주제는 어떤 알고리즘 문제에 대해서도 가장 직관적으로 가져갈 수 있는 툴인 셈이다. 시뮬레이션은 마치 현실에서 똑같은 일을 할 때 행동 하나하나를 코드 한줄한줄로 옮기는 셈이고, 전체 탐색은 효율성을 고려하지 않은 채 전체 데이터를 가공할 수 있는 기본 방법론이다. 시간/공간 예측 계산은 아주 rough한 예측 틀만 제공했지만 문제푸는데는 무방하다.



      동시에 이러한 분야에 진입할 때 겪게 되는 몰입 방해 요소들을 하나씩 짚어주면서 알고리즘의 세계에 편안하게 들어올 수 있도록 해준다. 예를 들면, 코딩하는 것 이외에 생각해야 하는 출제자 의도 파악, 상수 범위 제한이나 러닝 타임 제한, 메모리 할당 제한, 그리고 고급 수학들에 대한 두려움을 ‘문제 풀기 전에’ 라는 코너에서 잘 추려내어 설명해준다.



      또한, 시각화된 예시들을 통해 문제에 대한 직관적인 이해를 돕고, 문제 해설은 물론, 기존의 알고리즘 풀이집들과는 다르게, 다양한 독자들을 배려해서 모든 문제에 대해 C++, C#, JAVA 풀이를 제공한다. 코드 해설이 끝난 뒷 공간에 작가가 들려주는 간단한 노하우와 이야기는 옆에서 친절한 선생님이 모를 만한 것을 미리 알려주는 듯하다.



      중급 카테고리에서는 Division 2의 중급, 고급 문제들을 다룬다. 가장 많은 초보자들이 더이상 나아가는데 힘들어하는 DP(동적 계획법)을 최대한 많은 문제에서 쉽게 서술해내려는 작가의 노력이 많이 들어가 있다. 또한, 탐색 범위 한정 알고리즘이라는 챕터로 탐욕 알고리즘과 탐색법, 해밀턴 패스와 같은 응용 기법들을 하나의 맥락에서 이해하게 해준다.



      상급 카테고리에서는 Division 1의 문제들을 다루는데, 이곳의 포인트는 한 문제에 여러가지 접근의 해설을 붙인다는 것. 그동안 초보자들에게 가혹했던 알고리즘 풀이집의 방식을 많이 바꾸어낸 점 중 하나로, 전체를 이미 본 자들만 쓸 수 있는 어려운 이론을 적용할 것이 아니라, 전체의 일부분을 여러 가지 접근 방식(다양한 자료구조, 수학기법, 알고리즘 기법, 심지어 실패한 방법+피드백까지..)으로 들여다봄으로써 자연스럽게 깊은 이해를 이끌어내려는 노력이 엿보인다.



      마지막 장은 ‘수학 문제’라는 제목인데, 굉장한 난이도와 추상적인 이해의 한계가 곁들여진 끝판왕의 모습과는 달리 아주 쉬운 중학교 수준의 수학만 언급을 한다. 가장 어려운 이야기가 유클리드 호제법..



      그리고 이 장의 문단에서 ‘수학’을 핵심 과목으로 배워온 나 같은 친구들이 ‘프로그래밍’이라는 것에 접근하는 방식을, ‘간파한’ 아주 재미있는 문장이 나온다.



      “(수학지식의) 사용 목적은 .. 다르지 않습니다. 많은 사람들이 수학적인 느낌이 강한 (알고리즘 류의) 문제들을 보면 중고등학교에서 배운 수학처럼 O(1)의 수식으로 예쁘게 풀려고 합니다. (중략) “



      O(1)의 수식.. 혹시나 이 말이 무슨 말인지 궁금다면, 수학 문제의 주관식 답란 공간에 딱 들어가는 길이의 수식으로 생각하면 된다. 현실의 문제들은 아주 복잡하고 깔끔하지 않고 난잡하고 불확실한 것들이 많음에도, 수학을 중요하게 배우는 우리는 다른 학문에서조차,추상적이고 깔끔하고 핵심이 모인 답을 원하지는 않는가?



      이러한 생각에 공감하지만 (생산적으로) 직접 느끼고 싶은 자연계 학생이나, 프로그래밍을 잘하는데 있어 지름길과 재미있는 방법론을 원하는 사람이라면, 꼭 한번 볼만한 책임은 분명하다.

  • 내용이 없습니다.
    • 사전처럼 바로 찾아 쓰는 알고리즘

      조지 T. 하인만 , 게리 폴리케 , 스탠리 셀코

    • 더 나은 프로그래밍을 위한 코드골프 : 즐기면서 배우는 자바스크립트 코드 퍼즐과 알고리즘

      야나이 마사카즈

    • 누워서 읽는 알고리즘: 프로그래밍 상상력을 키워주는 알고리즘 이야기

      임백준

    • 뇌를 자극하는 알고리즘

      박상현

    • Programming Challenges: 알고리즘 트레이닝 북

      스티븐 스키에나 , 미구엘 레비야

닫기

해당 상품을 장바구니에 담았습니다.
장바구니로 이동하시겠습니까?