본문 바로가기
🏅 대회/한국코드페어

2022 한국코드페어 해커톤 후기 (TMI 주의)

by 아단아 2022. 12. 29.
728x90

(2달이나 지났지만) 해커톤 때의 기억이 너무 좋아 글로 남겨보려고 한다.

또한 내 글이 다음 해커톤에 참가하시는 분들에게 도움이 되었으면 좋겠다.

(TMI 겁나 많음 주의)

 

0. 레벨테스트

레벨테스트는 정보올림피아드 2차 날과 겹쳤던 것으로 기억한다. (아쉽게도 난 정보올림피아드 예선에서 탈락했었다.)

줌을 키고 화면을 공유하며 진행하는 여느 대회와 다름없는 온라인 대회였다.

 

문제 자체는 꽤 쉬웠다. 전에 파이썬 강의를 진행해주었는데, 기본적인 파이썬 문법만 알고 있으면 다 쉽게 풀 수 있는 문제들이었다. 하지만 문제는 실기형 문제였다. 정보올림피아드나 NYPC 처럼 제출하면 결과를 바로 알 수 있는 방식이 아니어서 문제를 풀면서 꽤 초조했던 기억이 들기도 했다. 그래도 평소에 알고리즘 문제를 많이 접한 덕분에 레벨테스트에서 좋은 결과를 얻어 예선의 예선 합격자 100명 중 한 명이 되었다.

 

추가로 레벨테스트의 결과는 해커톤이 마무리된 지금도, 나오지 않고 있다.

 

1. 팀매칭

 해커톤 주최측에서는 팀매칭을 위해 사이트도 오픈하고, 참가자 개인이 모여 팀매칭을 위한 디스코드 서버까지 만들었었다. 사이트 게시글에는 코딩으로 벌써 많은 것들을 쌓아놓은 사람들이 팀원들을 찾고 있었다. 나는 그때 나의 코딩 실력을 보여줄 수 있는 정보가 백준 아이디밖에 없었어서 이때부터 깃허브를 관리하게 되었다. 이때 '나와 팀을 할 사람이 있을까' 라는 생각과 함께 나는 해커톤이 팀플이니만큼, 아는 사람들과 해야겠다는 생각으로 평소에 알고 있던 친구와 오빠와 함께 해커톤에 참가하였다.

 

노션에다가 아이디어를 적기로 했으나 아무도 적지 않았다.

우리 팀이 예선 주제보다 더 심혈을 기울여서 고민한 것이 있다. 바로 팀명이다. 우리는 몇 주동안 팀명을 정하지 못하였고 팀명에 시간낭비를 한다는 느낌이 들어서 그냥 눈앞에 있는 '흰색마우스' 를 임시 팀명으로 하고, 태클을 거는 사람이 나오면 바꾸기로 하였다. 하지만 아무도 태클을 걸지 않았고 우리는 결국 흰색마우스가 되었다. 참고로 본선 때 해커톤 스태프분이 왜 이름을 흰색마우스로 지었냐고 해서 그때 "흰색마우스로 세상을 더 이롭게 만들고 싶다" 는 소설을 덧붙였다.

 

2. 예선

1. 주제선정

 주제는 데이터, AI 등 다양한 소프트웨어 기술을 활용해 디지털 역기능, 스마트기기 과의존, 물가상승, 환경, 지역경제 중 하나의 주제를 택하여 아이디어톤을 진행하는 것이었다. 평소에 환경에 관심이 많았던 우리 팀은 '환경' 쪽에서 생각을 해보기로 했고 '페트병의 라벨' 에 대해서 이야기가 나오기 시작했다.

 

 처음에 라벨을 제거하면 좋으니 라벨 제거를 한다면, 리워드를 주는 방식을 활용해보자고 하였다. 그때 우리 팀의 명예 멤버로, 팀원 중 한 분의 친구분이 '리워드가 아니라 다마고치 같은 방식을 활용하면 어떻겠냐' 라고 제안을 해주셨다. 그분의 말대로, 리워드를 한다면 우리가 많은 리워드를 줄 수 없고 리워드가 필요한 학생밖에 사용을 하지 않는다. 하지만 다마고치 방식을 활용한다면 남녀노소 누구나 자신의 캐릭터를 위해 열심히 환경보호에 동참할 것이다. 그래서 우리 팀은 최종 주제로 '라벨 제거 확인 다마고치' 를 만들기로 하였다.

 

2. 개발

 개발은 티쳐블머신과 파이썬의 텐서플로우를 이용했다. 그때 처음으로 파이썬으로 알고리즘 문제풀이가 아닌 다른 것을 만들어보아서 어렵지만 신기한 경험이었었다. 라벨이 제거되었는지 확인을 하기 위해 데이터도 수집을 해야 했다. 데이터 수집을 위해 셀레늄 크롤링도 배워 이미지 다운을 시켰다.

 

 문제는 머신러닝에 있었다. 첫 번째로 머신러닝 데이터가 너무 부족해서 정확도가 많이 떨어졌던 것이고 두 번째로는 티쳐블머신과 파이썬을 연결하는 과정에서 오류가 생긴 것이었다. 데이터는 이젠 크롤링이 아닌 직접 찍음으로써 문제를 해결했고 연결은 몇 날 며칠 붙잡고 있다 보니 어느 순간 성공하게 되었다. 그때 빨간색 메시지가 뜨지 않고 결괏값이 떴었을 때의 기쁨은 말로 표현할 수 없었을 것이다.

 

3. 멘토링

 내가 해커톤을 하면서 가장 좋았던 부분이다. 멘토링을 받기 전에 '멘토링을 받는 게 부담스럽다, 의미있을까' 라는 생각을 하였다. 하지만 멘토링을 받으면서 부족했던 부분을 채우고 미션도 받으면서 팀원들 모두가 더 적극적으로 참여하게 되었다.

 

3. 예선과 본선 사이

 나는 이 문자를 받은 순간을 잊을 수 없을 것 같다. 해커톤 예선동안 잦고 많은 오류들로 쌓인 스트레스를 해소하기 위해 혼자 노래방에 가있는 상태였다. 내 최애곡인 '10cm-딱10cm만' 을 부르면서 핸드폰 알림을 확인했었다. 한창 노래 연습한다고 노래방에 갈 때 음성녹음을 해두었었는데 이때 한번 음이탈 하고 몇 초 동안의 정적과 '와...' 라고 했던 녹음이 아직 나의 핸드폰에 남아있다..ㅋㅋ 이때 문자를 받고 신나서 몇 곡 더 열심히 하다가 30분 뒤에야 회신문자를 보내야 한다는 것을 확인하고 문자를 보냈다.

 

 예선에서 우리 팀이 당장 무엇을 만들기는 힘들다는 생각으로 각자 파트를 나누어서 공부를 진행했다. 평소 프런트엔드를 할 수 있었던 오빠는 프론트엔드를 더 하기로 하고, 나와 다른 팀원은 기존에 하던 파이썬으로 백엔드인 플라스크를 공부하였다. 이때 여러 가지를 만들어보면서 웹에 너무너무 너무나 큰 매력을 느꼈고 요즘에는 앞으로의 진로를 웹개발자로 정하고 있는 추세이다.

 

그리고 매주는 아니지만 격주로 주말에 모여 브레인스토밍을 진행했다. 노션을 만들어서 현재 나올만한 키워드를 찾고 키워드를 조합해서 별의별 주제들을 만들어보았다.

댓글에도 엄청나게 많은 의견들이 오갔다. (터무니 없는 소리들과 농담이 더 많았던것 같긴 하다.)

 

4. 본선

0. 대회 입장

 본선은 참 신기하게도 내 생일날에 진행이 되었다. 다행히도 우리 학교친구도 대회에 참석해서 생일 당일날 받은 유일한 선물과 함께 즐거운 생일을 보낼 수 있었다! (우리 팀원들은 퇴장을 하면서야 내가 생일인 것을 알게 되었고, 그때 받은 생일선물인 쿠키는 아직 먹지 않았다.) 덕분에 전날에 현장체험학습을 내고 미리 대회지에 가있었다. 

 대회 입장 때 팀 이름이 적힌 목걸이와 함께 음식이 담긴 박스를 주셨다. 그 박스에는 유부초밥이랑 주스랑 샐러드가 들어있었는데 아침 못 먹고 온 학생들을 위한 배려가 느껴졌다... (그리고 맛있었다)

 

 입장 후 필요한 프로그램을 설치했다! 근데 솔직히 노트북이 다 세팅이 되어있어서 시간이 남았었다... (윈도우 기반의 LG 컴퓨터였다) 그 시간에 우리 팀은 CMD로 해킹하는 척 하기, 노트북의 성능 테스트등 여러 가지를 하며 컴퓨터와 익숙해지는 시간을 갖었다. 그리고 개인별로 노트북을 주었는데 대회를 진행하며 점점 시간이 지나니 개발용, 기획용, 디자인용으로 바뀌면서 자리를 이곳저곳 옮기게 되었다.

 

1. 주제 발표 및 주제 선정

 주제는 여러 개의 주제가 있었다. 표에 여러 주제가 있었는데 생각보다 주제가 많아 심심치 않게 놀란 기억이 있다. 

(원래는 이 아이를 위한 서비스를 제작해 볼 예정이었다.)

주제로 나온 키워드들은 위 글에서 확인할 수 있다. 주제는 시각장애인들을 위해 쓰레기를 분류해주는 키오스크를 제작하기로 하였다.

 

2. 개발

 예상과는 다르게 머신러닝을 활용해야 하는 주제가 나오게 되어서 급하게 머신러닝을 어떻게 할지 생각을 하였다. 그래서 우리 팀은 그나마 할 수 있는 앱인벤터를 활용하여 개발을 진행하였다.

 개발을 할 때 가장 많은 시간을 소요했는데, 오류 고치는데 가장 많은 시간이 소요되었다. 우리 팀이 겪게 된 오류는 머신 러닝 포 키즈와 앱인벤터의 연결이었다. (완성까지는 2시간 정도 걸렸고 이 오류를 고치는데 나머지 시간을 다 사용했다.) 이때 점심시간까지 소요되었는데 점심으로 나온 도시락은 집에 고이 가져가서 가족들한테 주었다.

 

3. 발표 준비

 한쪽에서 에러를 고치면서 나머지는 PPT와 대본을 제작하였다. 원래는 미리캔버스를 사용하려고 했으나, 코드페어 측에서 PPT 템플릿을 주어 PPT 툴에서 제작을 진행했다. 몇 년 동안의 온라인 수업 생활로 인해 PPT보다는 미리캔버스가 익숙했던 나는 만드는데 조금 버벅거리긴 했지만 같이 PPT를 제작하던 멤버가 많은 도움을 주었다.

 발표 준비는 꽤 순조로웠다. 일단 나는 팀장이기 때문에 파트가 많았었다. 다행히도 나는 '연설' 이라면 꽤 자신 있는 경력직이라서 팀원들의 발표를 듣고, 피드백을 더 많이 해주었다.

 

 4. 발표!

 발표 순서는 인터넷 제비 뽑기로 진행했다. 우리 팀은 중간 순서였다. 우리 팀은 발표 자체는 꽤 잘했지만, 그 외에서 여러 가지 문제가 있었다. 먼저 첫 번째 문제는 내가 중간 PPT를 수정했었는데 수정본에서 문제가 있었던 것이었다! 수정본에는 어디서 나온 지 모르는 '★'이 하나 찍혀있었다. 별을 보았을 때 내 눈은 엄청나게 흔들렸을 것이라고 장담한다. 다음으로는 질의응답에 제대로 답을 하지 못한 것이었다. 초반 질문은 잘 대답했지만, '머신러닝 포 키즈에서 사용된 머신러닝의 기법을 설명할 수 있나요?' 라는 질문에 대답을 하지 못했다. 진짜로 우리 팀은 머신러닝에 대해서 몰랐기 때문에 서로에게 떠넘기다가 그 질문에 '아직 공부하지 못한 부분입니다' 라고 대답하게 되었다.

 우리 팀의 발표가 끝나고 다른 팀의 발표를 들을 때 움찔움찔했던 부분이 있는데 바로 주제가 겹쳤던 것이었다! 당연히 사람 생각이 거기서 거기이긴 한데 굉장히 많은 견제가 되었었다.

 

 5. 추가로

 우리 팀은 남자 한 명과 여자 두 명으로 구성되어 있었다. 이번 해커톤에는 여자가 있는 팀이 드물었고 더군다나 여자가 두 명이나 있는 팀이기도 하고 팀의 분위기가 너무 좋아 보인다고 기자님께 인터뷰를 요청받았다. 끝나고 대회장 쪽 벽으로 가서 즐겁게 인터뷰를 마쳤다!

 

5. 마무리

 결론적으로, 우리 팀은 동상을 수상했다. (ㅘㅏㅏㅏㅏ!!!!) 최근 상장이 오기도, 기사가 나기도 했다. 우리 팀은 앞으로 은상, 금상을 향해 더 앞으로 나아갈 것이다.

728x90