선배님들, 코딩 대회 준비를 시작해 보려고 하는데 조언이 필요합니다

  • xfactor
    xfactor

    안녕하세요. 이제 갓 대학교 3학년이 된 학생입니다.
    본전공은 경영학과이고 2학년 1학기부터 컴퓨터과학을 복수전공 시작했습니다.
    지금까지 수강한 수업은 컴퓨터프로그래밍(파이썬), 객체지향프로그래밍(자바), 자료구조(자바)인데요, 과제할때 코딩을 하면 상당히 즐겁게 느껴졌습니다. 그래서 적성에 맞는 것 같아서, 좀 더 새로운 도전을 해보기 위해 프로그래밍 대회 준비를 시작하고자 합니다.그래서 구종만 선배님이 쓰신 책을 구입해서 읽고 있는 중입니다. 틈틈히 백준 사이트에서 문제도 풀어보려고 노력하고 있구요. 그런데 생각보다 난이도도 어렵고 어떤 문제는 손도 못 대겠더라구요.. 제가 문과라서 그런지 이쪽 분야를 공부하는 최적의 방법도 잘 모르겠고.. 그래서 조언을 구하고자 글을 올립니다.

    1) 실례가 아니라면, 이 사이트에서 코딩 대회를 준비하시는 분들은 연령대가 어떻게 되시는지 궁금합니다. 직장인 분들도 많이 계시나요?
    2) 종만 북을 보니까 코딩이 c++로 되어있는 것 같은데 제가 자바만 배워서 어떤 코드들은 이해가 안되더라구요... 그리고 c++ 이 훨씬 빠르다고 들었는데 코딩 대회에서는 자바보다 c++이 더 유리한가요? 지금이라도 c++ 을 익혀야 할까요?
    3) 코딩대회에서 수상하신 분들은 얼마나 오래 공부하셨는지 궁금합니다. 1년 투자로는 불가능한건가요?
    4) 혹시 본인의 공부 방법들을 조금 공유해 주실 수 있는지 궁금합니다. 계속 문제를 많이 풀어보는것 외에는 방법이 떠오르지 않더라구요.
    5) 저희 대학교는 알고리즘 수업이 2학기에만 열려서 아마 올해 가을이 되서야 그 수업을 들을 수 있을 것 같은데 알고리즘 수업을 안들으면 코딩 대회에서 많이 불리한가요? 제가 따로 알고리즘 교재/종만북으로 공부해야 할까요?

    선배님들의 많은 조언 부탁드립니다ㅜㅠ


    3년 전
4개의 댓글이 있습니다.
  • hyunhwan
    hyunhwan

    도움이 될 지는 모르지만, 답변 남깁니다. 저의 경험을 바탕으로 남기는 사견이기 때문에, xfactor님께 통용이 되지 않을 수 있음을 미리 알립니다.

    1. 연령대는 매우 다양할 것으로 사료됩니다만, 굳이 따지자면 대학 학부생 대의 연령의 사람들이 많지 않을까 싶네요. 그리고 생각보다 중/고등학생도 많을 것이고요. 또한 근래들어 점점 실무에 종사하시는 분들도 사이트를 이용해주시는 것 같습니다.

    2. C++를 학습하는 것은 중요할 것입니다. 물론, 어떤 대회의 경우 각각의 언어에 대해 다르게 시간제한을 주는 경우가 있지만, 그렇지 않은 경우가 여전히 더러 있으며, 이 경우에는 불이익을 받을 수 있습니다. 다만, 제 생각에는 종만북에 대해서 이해가 안가는 점은, 조심스럽지만 언어 레벨보다는 아직 입문하셨기 때문에 정확히 알고리즘이 파악이 되지 않은 상태에서 발생하는 것 아닐까 싶습니다. 만약 종만북에 필요한 C++에 대한 지식이라고 하면 아마, C++ STL을 익히면 보다 원할하게 이해가 가지 않을까 싶네요.

    3. 사람마다 차등이 있겠죠. 어느정도 레벨의 입상을 원하시는지 모르겠지만, 1년 공부를 통해서는 힘든 것은 사실입니다. 제가 속해있던 학교의 친구들을 비춰봤을 때, 아무것도 모르는 상태에서 신입생 부터 공부를 시작하여, 보통 ACM-ICPC에 입상권에 드는 경우는 빠르게는 2년차에, 보통 3년차에 입상을 하는 경우가 많았습니다. 그리고 코딩대회에서 수상하는 분들의 경우는 아마 제가 범접하지 못할 시간을 이곳에 투자했을 것으로 짐작합니다. 그리고 사실 N년을 투자를 했을 때, 과연 저의 실력이 원하는 수준으로 오를까요? 라는 것은, 뚜껑을 열어봐야 자신이 정답을 알 수 있는 문제라고 봐야한다 봅니다. 다만, 혹시 대회 공부를 시작하시려면 최대한 빨리 준비하시는 것이 좋다는 것은 사실이죠.

    4. 제 경우에는 고등학교 2학년때 부터 공부를 시작했었으나, 큰 두각을 나타내지 못했고, 그리고 대학 입학 이후 잠시 공백기를 거쳤다 2학년말 부터 공부를 시작해서, 석사 1년차까지 이런 대회에 많이 참가를 했습니다. 운좋게 수상명단 끄트머리에서 상도 타보고 한 케이스인데 (아마도 그 당시에는 파이가 작았기 때문에 입상을 하기 쉬웠던건 사실인것 같습니다. 만약에 지금이었다면, 확언하기 힘들겠네요), 제 경우 석사 1년차 때 상대적으로 실력이 많이 늘었다고 생각했습니다. 물론 그 전에도 나름 꾸준히 공부를 했지만, 원하는 만큼 머리랑 몸이 따라가지 못했습니다. 다만 마지막에 공부 방법을 바꿨던 것이 있는데, 다음과 같이 공부를 했었습니다.

      • 매일매일 꾸준히 문제를 푼다. 할당량을 정하는 것보다 문제 사이트에서 가장 만만해 보이는 사람을 골라서 그 사람을 넘어서는 재미로 많이 풀었던 것 같습니다.
      • 문제를 풀고 나서 실수한 내용을 일기장 처럼 적었습니다. 접근방법, 소스코드, 그리고 실수한 내용들을 적었던 것 같네요. 그리고 시간날 때 프린트해서 일기장 보듯이 자주 보면서 (생각보다 읽는 재미가 있었습니다) 자주 리마인드를 했었습니다.
      • 주기적으로 열리는 대회에 꾸준히 참가해서 자신의 수준에 대해서 냉정하게 평가를 하려고 노력했습니다. 그 당시 topcoder가 거의 유일한 대회 사이트여서 참가를 많이했는데, 요사이는 codeforces, topcoder들을 참가하실 수 있을 겁니다. 그리고 topcoder에 참가하기 위해 실제 환경에 맞춰서 연습을 많이 했었습니다. 시간 같은것도 똑같이 맞추고요. 그러다보니까 전보다 코딩속도나, 생각의 속도가 많이 빨라짐을 느꼈던것 같습니다. 꾸준히 빨라진걸 느낀건 아니고 어느 순간 그런 느낌이 오더라고요.
      • 그리고 모르는 문제가 있으면, 고민을 열심히 하다 어떻게든 답을 찾아 다녀서 (구글링을 하거나, 구걸을 하거나) 남의 소스코드를 보면서 분석했습니다. 재대로 이해가 안되면 디버깅 툴을 돌리거나 아니면 출력문을 찍어서 내부가 어떻게 돌아가는지 보면서요.
    5. 보통의 알고리즘 과목의 경우, "이런 알고리즘이 있고, 증명해보세요, 끝!" 이기 때문에 솔직히 도움이 안될꺼라고 봅니다. 혹시 알고리즘 문제에 대한 구현을 요구하는 과목이라면 들을만 하겠지만, 이걸 듣지 않고 불리하진 않을겁니다. 오히려 공부를 미리 해서 나중에 알고리즘 수업을 들을 때 많은 도움이 되면 모를까요? 그리고 책은 여러권을 보시는걸 추천합니다. 그리고 인터넷에 엄청나게 무수한 많은 정보가 널려있으니, 이 것도 이용을 하시는게 좋겠죠.


    3년 전 link
  • hyunhwan
    hyunhwan

    그리고 STL에 대해서는 제가 예전에 topcoder tutorial을 부분 번역한 문서가 있는데 참고해도 좋을 것 같습니다: https://www.dropbox.com/s/4wop1jxwr9ncgmk/STL%20tutorial.pdf?dl=0


    3년 전 link
  • 장홍준
    장홍준

    hyunhwan님이 많이 설명해주셔서 그 부분들을 제외하고 제 생각을 남겨봅니다.
    1) 중고등학생들과 대학생이 주를 이룹니다.
    2) 장단점이 존재하지만, 프로그램 수행속도면에서는 c++이 더 유리합니다.
    3) 저는 초6부터 했으니 10년 정도 했네요. 공부한 기간은 사실 별 의미가 없습니다. 일주일에 1,2시간씩 3년 하는 것보다 하루에 12시간씩 3달 하는 게 더 실력향상에 도움이 된다고 생각해요. 공부할 때의 본인이 가진 배경지식과 수학적 자질 또한 많은 영향을 줍니다.
    도전하며 배우는 것에 만족하지 않고 수상을 바라신다면(ACM ICPC 수상 혹은 삼성대학생프로그래밍경진대회, LG코드첼린저 등등), 남들보다 몇 배의 노력을 하지 않는 이상 현실적으로 불가능한 것이 요즘 입상권 수준입니다.
    4) 기본적인 자료구조/알고리즘을 우선 익히고, 문제들을 풀어나가다가 모르는 부분이 나오면 찾아서 공부하는 게 좋은 것 같습니다. 풀이를 모르면 모르는 부분이 있는지조차 모르기 때문에 풀이가 존재하는 문제들(알고스팟, KOI, COCI, 코드포스나 탑코더 문제들 등등)을 찾아 푸는 것을 추천드립니다.
    5) 서울대, 카이스트, 포스텍을 제외한 국내 대학의 학부에서 배우는 알고리즘 수업은 거의 도움이 되지 못한다고 알고 있습니다. 다루는 내용과 수준이 경시대회에는 어림도 없습니다.


    3년 전 link
  • 장홍준
    장홍준

    비슷한 고민을 하신 분들의 질문글 링크들을 남겨 드립니다. 답변이 많이 달려있으니 참고하시면 도움이 될 것 같습니다.
    https://www.acmicpc.net/board/view/9784
    https://www.acmicpc.net/board/view/7119
    https://www.acmicpc.net/board/view/2514


    3년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.