안녕하세요. 다들 서울대회 준비는 어떻게 하고 계신가요?

  • 바아보오
    바아보오

    안녕하세요. 저는 강원대학교 plz,so gae ting 팀의 조규억입니다. (어쩌다보니 자기소개를 또 하게 되는군요.)
    얼마남지 않은 본선을 준비하는데, 저희는 아직 많이 부족한 점이 많기에 어떻게 해나가야 할지 잘 모르겠네요. 여기 계신분들 중에는 많은 참가 경험을 가진 대학의 분들이 많은 것으로 알고 있습니다.
    혹 영업비밀(?)이 아니시라면 살짝 newbie들을 위해 준비전략과 같은 것들을 짧게나마 가르쳐 주셨으면, 저희와 같은 팀에게는 큰 도움이 될것 같네요.

    [이 글은 과거 홈페이지에서 이전된 글입니다. 원문보기]

    17년 전
7개의 댓글이 있습니다.
  • Toivoa
    Toivoa

    이맘때쯤이라면 한달 조금 안남았으니 막판 연습으로 불태우고 있겠군요... :)
    다 아시는 것이겠지만 대회장에서 필요할 것 같은 알고리즘을 라이브러리화 해서 미리 준비하고 잘 동작하는지 검증해 두는 것이 중요합니다. 아무리 쉽게 구현할 수 있는 코드라도 시간에 쫓겨서 구현하는 것보다는 이미 검증된 코드를 가져다 쓰는게 낫겠죠?


    17년 전 link
  • Toivoa
    Toivoa

    저는 대회 준비할 때 매일 문제 풀고, 풀었던 문제들 어떻게 풀었는지 로그 써서 정리해두고, 매 주 팀 연습하고, 세미나 하면서 준비했었습니다. 문제 풀이나 세미나 같은 것이야 다른 분들도 다 하실테니 접어두고 로그 남기는 것이 대해 써본다면...
    문제 풀이 로그 같은 것을 남겨두면 나중에라도 그 문제를 어떻게 접근했었는지 등에 대해서 살펴볼 수 있으며, 실패했던 문제의 경우에도 정리하다 보면 새로운 해법이 떠오르는 경우도 있습니다. 그리고 무엇보다도 자기 솔루션에 대해서 다시 한번 생각해보고 정리해볼 수 있다는 점이 가장 큰 장점이라고 생각합니다.


    17년 전 link
  • DongJoo
    DongJoo

    여민님 얘기랑 비슷한데 저같은 경우는 대회장이랑 같은 환경으로 5시간 잡고 리저널 문제 중심으로 하나씩 잡았던 기억이 나네요. (cii-judge)에 있는... 실제 대회같은 마음으로 컴터 한대만 쓰고 하면서 계속 5시간 씩 집중하는 버릇을 기르려고 했습니다.
    대회와 최대한 비슷한 분위기를 내기 위해서
    과자나 먹을걸 사놓고 먹어가면서 문제 풀기 연습하기도 했습니다. (실제 서울리저널에서 먹을걸 나눠주기때문에..)
    절대 배고파서 그런건 아닙니다.
    그리고 각자 하나씩 전문분야를 만들어보려고 했습니다. 그래프가 나오면 누구한테 주고, 수학문제가 나오면 누구한테 주고.. 뭐 이런식으로 말이죠. 개인연습은 그런식으로 진행했습니다.


    17년 전 link
  • JongMan
    JongMan

    아니.. 영업비밀이라면 이게 최대의 영업비밀이겠죠.. :) 간략하게 몇 가지만 정리해 보겠습니다.
    1. 새 알고리즘을 배워서 그간 못 풀던 문제를 풀려는 시도를 접으시고, 그동안 잘 풀던 문제를 더 안정적으로 빨리 푸는 연습을 하세요.
    2. C++ 나 Java 의 언어 기본 라이브러리에 익숙해지고 이들을 익숙하게 사용할 수 있도록 하세요.
    3. 라이브러리를 준비할 때는 항목별로 독립적으로 사용할 수 있도록 잘 정리하고, 각종 예외 조건들을 잘 정리하는 데 신경쓰세요. 라이브러리에 들어가는 표준적인 알고리즘들은 최대한 간결하고 알아보기 쉽게 작성하는 데 신경쓰세요.
    4. 피드백을 저장하는 습관을 들이세요. 어떤 문제에서 어떻게 틀려서 삽질했는지, 이 문제는 어떤 key observation 이 있어야 풀 수 있는지, 최종적으로 배운 것이 무엇인지 (만약 있다면) 모두 기록에 남겨 두세요. 코드도 남겨 두세요. 나중에 읽어내려가면서 그때 배운것이 무엇인지 되새기는 데 도움이 됩니다.
    5. 알고리즘은 면밀하게 검토하고 코딩을 시작하세요.
    6. 알고리즘은 맞지만, 코드는 틀리는 부분을 유의하세요. 알고리즘이 정확하고 구현이 좋다고 해도 상상도 못한 데서 프로그램이 틀릴 수 있습니다. 다음 3가지는 제가 코드 제출 전에 마음 속으로 한번씩 확인한 항목들입니다.
    a. Efficiency; 효율성
    b. Correctness; 알고리즘의 정당성
    c. Coverage; 알고리즘이 각종 corner case 에도 정확하게 작동하는지
    굉장히 당연한 항목들입니다만 이렇게 목록화해서 이름을 매겨 놓으면, 평소에는 생각도 안 했을 경우에 떠올리고 고칠 수 있는 경우가 있습니다. 그 외에도 배열 범위 초과, 숫자 오버플로우, floating point imprecision 등은 틀리기 쉬운 패턴입니다.
    7. 디버거를 사용하지 않고 가능한한 코드를 눈으로 읽거나 printf 로 디버깅하는 습관을 들이세요. (늦었는지도 모르지만) 디버거를 사용하면서 터미널을 잡고 있으면 안됩니다. :)


    17년 전 link
  • lewha0
    lewha0

    제가 속한 팀은 대회 거의 직전까지도 평소와 비슷한 연습을 했던 것 같습니다.
    주말 즈음에 문제 셋을 하나 잡고, 대회처럼 5시간동안 풀어보는 식으로요.
    으음 그런데 사실 이것만으로는 성적 향상은 어려운 거 같습니다.
    위에서 언급된 이런저런 방법을 적용해보는 게 좋을 거 같네요..
    그 외에 정말 추천하고픈 팁이라면.. (이것도 위에서 언급된 것 같지만) 팁 게시판 같은 곳에 팁을 모아두는 것입니다.
    여러 경우에 적용해볼 수 있는 사고방식? 같은 걸 모아둔달까요?
    "조건을 만족하는 경우의 수를 구하는 문제는 (전체 경우) - (조건을 만족하지 않는 경우) 로 구할 수 있다" 같은 걸 모아두는 거지요.
    그 외에도 했던 실수나, 실수 극복 방법도 함께 모아두고요.
    연습을 통해 새 알고리즘을 배우고 적용해보기에는 남은 시간이 짧을지도 모르지만,
    위와 같은 팁을 발견하고 대회장에서 할 법한 실수를 미리 해두는 건 도움이 되지 않을까 싶네요 ^^


    17년 전 link
  • zizavino
    zizavino

    유키, 네 ㅠㅠ


    17년 전 link
  • 세훈
    세훈

    전 저희팀에서 실수했던 목록을 칠판에 적어놨던게 기억나는 군요
    1. array 체크 실수
    2. initialization
    이런 식으로 적어놓고 正자 적어가면서 체크했었는데 제법 괜찮았었던 것 같아요


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