ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ICPC, IUPC 후기
    아무거나적어~ 2021. 10. 8. 23:46

    오늘부로 나의 ICPC, IUPC 가 끝이 났다. 이 글에서 대회의 준비부터 종료까지를 회고하며 생각을 정리해보고자 한다.
    이 글이 같은 시행착오를 겪지 않는데 도움이 되길 바란다

     

     IUPC 를 준비하며 ~ 잡담

    우리팀, '인하원숭이' 는 사실 급조된 팀이다. 대회 접수 마감 직전, 알고리즘 동아리 CTP 에서 동아리원은 대회 참가를 원칙으로 한다는 사실을 전해들었다. 원래 동아리 내에서 '대회 준비반'으로 활동중이기는 하였으나, 올해는 군 전역후 전공공부로 정신이 없었기 때문에 대회준비기간 정도로 생각하고 있던터였다. 무엇보다 꼭 그렇게 해야겠다고 다짐한 이유는 첫째, 미분이 기억이 안나서였다. 그게 어떻게 이유가 되냐? 라고 물어보실 수 있겠지만 수학과로써, 수학이 정체성이라고 생각하는 사람으로서 충격이 아닐 수 없었다. 두번째로는 전공과목 수강신청을 무리하게 했다. '선형대수학 2'를 신청한 것인데 놀랍게도 '선형대수학 1'을 수강하지 않은 상태이다. 이러한 상황에서 대회에 나간다면 전공학업에 지장이 갈거라는 생각이 들었다. 

    어쨋든 부랴부랴 팀원을 구하기 시작했고, 아는 사람이 없었기에 동아리에서 마련해준 '구인 카카오톡'을 이용할 참이었다. 그때 왜인지는 모르겠으나 팀원 중 한분이신 'potatomonkey'님께서 같이 대회를 나가자고 제안하셨고 감사합니다ㅠ
    다른 한분 'pseong'은 회장님께서 매칭해주셨다. 대회접수 마감날에 결성된 팀이기에 팀명을 바로 결정해야했다. 그건 별로 중요하지 않게 생각하고 있던터라 웃으라고 potatomonkey 님 아이디를 보고 '인하원숭이 어때요?' 그랬다. 그리고 우리의 팀명이 되었다. 왜죠...?

    IUPC 준비는 남은 기간이 워낙 짧았기 때문에, 코드를 작성하는 감을 유지하는것으로 그쳤다. 그보다도 대회 상황을 시뮬레이션 해보고 뭐가 필요할지 상상을 했다. 예를 들면 '진행자분들이 대회를 중계하는 카메라로 나의 뒷통수와 모니터를 보고 싶어 하시니 삼각대를 준비해야겠다!' 정도?
    (실제로 온라인 대회를 치를 때 삼각대는 굉장히 유용했다. + 멀티텝)

     

    IUPC 진행 중 아쉬웠던 점

    비대면으로 진행하니 문제 아이디어 전달이 어려웠다

    우리는 디스코드에서 음성과 채팅을 사용하며 의사소통하기로 했다. 사실 문제 풀이 아이디어는 그림으로 설명할 때가 많은데 이러한 설명을 못하는 점이 굉장히 아쉬웠다. 그림으로 쓱- 그리면 될 것을 말로 설명하자니 답답했다.

     

    팀원의 코드를 이해하기 어려웠다. 그래서 디버깅해줄 수 없었다

    이러한 문제가 일어난 주된 이유는 나의 주 언어가 파이썬이기 때문이었다(ps 대회에 나가는 대부분이 c++ 을 사용하고 우리 팀원또한 그랬다). 이 점은 다음으로 해결할 수 있을 것이다.

    • 팀원의 코딩 스타일에 익숙해질 필요가 있다 ex) 변수 명명 습관 등등
    • 다른사람의 코드를 많이 보고 이해력 늘리기 -> 다른사람이 디버깅 해달라고 요청하면 해주자
    • c++ 에 익숙해 질것 -> 많이 사용해보는 방법밖에 없음

     

    각자 잘하는 분야에 맞는 문제 배분이 빠르게 되지 않았다

    이 점은 IUPC C 번 문항에서 느낀점이다. pseong 님께서 이 문제를 오래 잡고 계셨는데, 나중에 도움을 요청했을 때 내게 강점이 있는 문제였다. 처음부터 문제 배분이 잘 되었다면 시간을 아낄 수 있었을 것이다.

    • 각 팀원의 강점을 알고있다면 문제를 이해하고 빠르게 넘겨줄 수 있겠다
      -> solved.ac 문제 풀이 현황을 보면 어떤 유형을 좋아하는지 대략 알 수 있다

     

    ICPC 준비과정

    챙겨야할 것

    • 삼각대, 멀티텝, 충전기, A4 ~ 폰 카메라 설치 위함
    • 프린트기, 연결선, 충전선 ~ 컴터랑 프린터기 직접 연결해야 함
    • 노트북, 마우스, 키보드, (모니터, 화면 크게보는게 유리)
    • 아무도 없는 장소 ~ 대회 룰임
    • 빈 종이, 필통, 팀노트

     

    ICPC 진행 중 아쉬웠던 점 & 생각해볼 문제

    ICPC 는 한대의 컴퓨터만을 이용하여 3명이 코딩을 해야하는 대회다. 그래서 다름과 같은 문제점이 있었다

     

    디버거가 익숙하지 않았다

    이건 굉장히 불편한 요소 중 하나였다. 화면 구성이 낯설기도 했지만 단축키가 다르다는 것이 굉장히 불편했다.
    원래같으면 슥슥 넘어가는 부분을 단축키를 몰라 마우스로 클릭하고 복사하고 붙여넣고... 쉽지 않았다. 심각했다
    실제로 potatomonkey 님도 평소 사용하시던 디버거가 아니라 습관적으로 단축키를 누르다가 코드를 날려먹어서 한바탕 소동이 있기도 했다.

    • 대회 시작 전에 팀원간 디버거를 맞출 필요가 있어보인다

     

    키보드가 익숙하지 않았다

    이 또한 디버거 만큼 불편했다. 처음 써보는 키보드라 오타도 많이나고 타속도 느려졌다. Arl 위치랑 end 위치랑 달라서 애를 많이 먹었다

    • 키보드 또한 대회 나가기 전 익숙해져야한다! ~ 혹은 조금 일찍 모여서 각자 키보드를 사용하는 시간을 갖도록 하자

     

    팀노트의 부재

    ICPC 의 룰 중 하나가 미리 작성해 놓은 코드를 사용하면 안된다는 것이다. 따라서 문제를 다 구성하고 '세그먼트 트리 구현이 왜 틀리지!!?' 와 같이 소동이 안나게 하기 위해서는 미리 코드를 적어놓을 필요가 있다

    • 평소에 자주쓰는 코드 혹은, 전부 기억해내지 못하는 코드는 팀노트에 분류하여 모아놓자

    아직은 경험이 부족하기 때문에 당장은 하기 어려워 보인다. 그러나 내년 대회전에는 꼭 해야하는 작업이다

     

    아,, 이 알고리즘을 쓰는게 맞는데, 그게 뭐였더라?

    • 생각보다 알고리즘 종류는 많다. 까먹기 십상이다.
      well-known 문제집 정도는 스스로 분류해서 대회 전에 복기하는 것이 좋겠다
    • well-known 문제집 만들기

     

    대회를 마치며, 앞으로

    IUPC 는 운이 좋게 은상을 받았다. 내년에 대상에 도전해보고 싶은 생각이든다. ps 가 재미있고 열심히 해야겠다는 동기가 생겼다. 무엇보다도 앞으로 ps 를 같이 공부하게 될 팀원들이 생겨 기쁘다.

    ICPC 는 예선탈락했다. 내가 내 역할을 못해줬다. 대회때 기여한 거라고는 '음? 그거 10보다 크면 뒤에거는 안봐도 되지 않나요? -끝-'. B번이 수학문제라 팀원분들이 문제를 넘겨줬는데 시간이란 시간은 다 쓰고 못 푼게 너무 아쉽다.

    대회가 끝나고 팀원들과 밥을 먹으며 다음과 같은 목표를 정했다

     

    오렌지 코더가 되자!

     

    사실 대학교 졸업전에 이루어야겠다고 생각한 것인데, 이제는 정말 이루고싶다. 그래서 팀원들과 중간고사가 끝나면 1일 1 virtual 을 하기로 했다. 해야겠다고 생각한것은 다음과 같다

    • 1일 1 virtual
      팀원들과는 언제까지 이러한 방식을 유지할 지에 대한 이야기는 하지 않았다. 그러나 끝이 없는 목표는 금방 지키고 지키기도 어렵기에 스스로는 이번 겨울방학까지 하는 것으로 생각하기로 했다.
    •  solved.ac class 문제 여러번 풀기(다른사람 코드도 꼭 보기) ~ 이건 씹어먹는다 마인드
      이 또한 기한을 정하지 않았는데 우선은 1일 1 virtual 에 집중하고자 한다.
    • 문제 풀다가 많이 쓰이는 코드는 모아두자
      나중에 팀노트로 활용할 계획이다. 다른 분들은 github 에 코드를 올려놓으시던데 코드를 관리하고 인쇄해서 쓰기에 편해보인다.
    • 나만의 well known 모음집
      아직까지는 이 문제가 well-known 인지 모르겠다. 우선 Anz 선배님께서 관리하고 계시는 문제집을 참고할 계획이다
    • 다른분이 코드 봐달라서 하면 봐주자

     

    화이팅 >~< !!

    댓글

Designed by Tistory.