2020 군장병 온라인 해커톤 선발 후기 : 2020 국방오픈소스아카데미 해커톤 후기
후기 작성 계기
오랜만에 국방오픈소스아카데미에 방문하니, 홈페이지도 모두 리뉴얼되고, 2021 군장병 온라인 해커톤이 진행되고 있는 것 같아 작년(2020년) 에 참가했던 기억을 남기고자 작성하려고 한다.
작년에 나는 해커톤에 참가하여 결론적으로 군장병 온라인 해커톤에서 육군참모총장 상을 수상할 수 있었다.
그렇다면 수상까지 과연 어떤 과정을 거쳤는지에 대하여 작성하고자 하는 글이다.
참가 계기
국방오픈소스아카데미(OSAM)의 경우 군 내 인트라넷을 돌아다니다 집체교육 후기를 남긴 병사 덕분에 19년부터 그 존재를 알고 있었다.
후기 글을 본 후 든 생각은 "내가 하고싶은 개발을 하면서, 우리 부대도 벗어나면서, 잠시 일로부터도 해방?!" 이었다.
따라서 나는 20년에 해커톤을 참가하겠다는 일념 하에, 열심히 백준을 통하여 코딩테스트 공부를 하였다.
참가 과정
20년 1월, 코로나19의 여파로, 참가 공지 자체도 전년도에 비해 굉장히 늦게 올라왔었던 것으로 기억한다.
또한, 우리 부대로는 공문이 내려오지 않았는데 왜 육직부대로 공문이 내려오지 않았는 지에 대해서는 의문이다..
어찌됐든 그 존재를 알고 있었기에 공문이 올라올 때까지 인트라넷 온갖곳을 뒤져서 공문을 찾아냈던 기억이 난다.
해당 대회는 군 생활동안 시기가 맞는다면 2번 할 수도 있겠지만, 대부분 군 생활중 단 한번만 참가가 가능하기 때문에더욱 참가가 간절했던 기억이 있다.
참가할 때까지만 하더라도, 사실상 온라인은 확정이었지만 온라인 공지가 나오진 않았던 상태였기 때문에 집체교육에 갈 수 있지 않을까 하는 희망으로 국방오픈소스아카데미에서 제공해주는 코딩 테스트 예제 문제들을 풀며 준비했었다.
선발 과정
군 장병 온라인 해커톤에 참가하기 위해서는 별도의 선발 과정을 거쳐야 한다.
2020년에는 총 4가지로 점수가 나뉘어 채점되어 선발되었는데, 생각보다 탈락하는 인원이 종종 존재하는 것으로 보였다.
선발 요건
0. 인터넷 강의 수료 1. 개발과정 이론평가 2. 코딩 테스트 3. 개발 계획서
자세한 내용은 다른 분들이 잘 작성해 주기도 하였고, 사실 잘 기억나지 않기도 해서 어느정도 생략하도록 하겠다.
선발 요건 상세 설명
0. 강의 수료
모든 참가 인원이 들어야하는 필수과정 9개와 참가하고자 하는 분야에 대한 지정된 강의 트랙 1가지를 고른 후 수강 완료 해야한다.
1. 개발과정 이론 평가
선택한 분야에 대한 개발 과정에서 배웠던 것들을 바탕으로 이론 평가가 이루어 진다.
해당 부분에서는 만점을 받아야 해커톤에 참가할 만하다고 생각한다.
애초에 오픈북 테스트나 다름없기 때문에, 이 부분에서 점수가 감점되면 탈락에 크게 작용할 수 있다 생각한다.
2. 코딩 테스트
코딩 테스트 관련해서는 할 말이 많고, 또 다른 사람들이 궁금할 부분 같다.
19년도에 이뤄졌던 코딩 테스트보다 20년 코딩테스트 난이도가 후기만 보더라도 확연히 올라간 것이 느껴졌다.
사실상 해커톤 참가 여부에 당락을 결정짓는 가장 큰 요소라고 봐도 과언이 아니기 때문에, 코딩 테스트에 만반의 준비를 해야 한다.
5개의 출제문제를 주어진 시간 내에 풀어야 한다.
특징은, 부대 마다의 사정이 모두 다르기 때문에 모두 같은 시간에 시작하여 같은 시간에 끝나는 것이 아닌, 일주일 정도의 기간 동안 원하는 시간에 응시버튼을 눌러 이루어졌다.
2020년 당시에는 프로그래머스 사이트를 활용하여 이루어 졌다.
참가 언어는 C, C++, Java, Python, Javascript로 기본적으로 코딩테스트를 보는 언어는 모두 포함되기 때문에 언어 때문에 참가를 못하는 경우는 없을것으로 판단된다.
주의할 점은, 파이썬과 같은 기본적으로 시간적인 면에서 약점을 가지는 언어를 사용하는 경우 효율성 점수에서 점수를 얻지 못할 수 있다. 물론, 모든 코딩테스트가 그렇듯 파이썬 언어에 대한 시간 보정이 이루어졌겠지만,
C++로 풀이했을 때에는 만점을 받았던 문제를 파이썬으로 풀었을 경우에는 효율성 점수를 얻지 못했던 기억이 있다.
파이썬으로 코딩테스트를 본다면 어느정도 그러한 부분을 감안해야한다는 점을 말해주고 싶다.
20년 코딩 테스트 문제의 경우, 직접적으로 언급할 수는 없겠으나 대략적으로 언급해 보자면
일단 1,2번 문제는 기본적으로 백준을 풀어 본 적이 있다면 쉽게 풀이 할 수 있는 난이도이었기 때문에, 크게 언급할 것이 없다.
3번 문제는 덱을 활용하여 풀이했는데, 문제대로만 따라가면 크게 못풀 정도는 아니었다.
4번 문제 부터 고비였는데, 최소 공통 조상(LCA)을 활용하여 풀이하는 문제였다.
문제는 파이썬을 활용하여 문제를 풀이하면 효율성 점수를 얻지 못하는 난관에 부딪히면서 여러 시도 끝에 C++를 활용하여 문제를 풀이 하였더니, 만점을 받을 수 있었다.
물론, 파이썬으로도 효율성 점수를 있는 방법이 있었겠지만 당시에는 찾을 수 없어서 아쉬웠다.
5번 문제는 결국에 풀이 하지 못했다. 방향성 그래프로 표현했을 때, Simple Cactus Graph 형태의 그래프를 활용해서 개수를 count하여 결과값을 얻어내는 문제였는데, 4번에 시간을 많이 할애 하기도 했고,
애초에 그래프 문제를 어떻게 풀이해 나가야 할 지에 대해 감이 잡히지 않아서,
테스트 케이스당 점수를 얻는 테스트 방식 특성을 이용해서 대충 나올 것 같은 값을 하드코딩해서 반환해서 20점 가량을 획득하고 마쳤다.
중요한 것은 코딩 테스트가 해커톤 참가에 당락을 결정짓는 중요한 요소는 맞으나,
코딩 테스트 순위 결과가 해커톤 수상 결과와 동일하지 않다는 점이다.
오히려 결과적으로 본다면, 코딩 테스트와 제한적 환경에서 코딩하는 부분은 아예 다른 문제로 보여졌다.
코딩 테스트에서 좋은 결과를 얻지 못했다 하더라도 해커톤에 참가하게 되었다면 충분히 수상을 노려볼만 하다고 생각한다.
3. 개발 계획서
분야를 선정했다면, 해커톤 참여시 어떤 서비스를 개발 할 것인지 작성해야 한다.
대략적으로 프로젝트 명, 제안하고자 하는 아이템 개요, 전망, 목표 등에 대해 작성하는 부분이다.
유의할 점은, 병영생활 및 국방에서 활용가능한 앱, 서비스가 주제였기에 해당 부분에 맞추어 작성해야 했다.
해커톤 선발 후 시작 준비
기존에는 집체교육으로 한 장소에 모여 프로젝트를 진행했었기 때문에 어떻게 진행되었을지에 대해서는 정확하게 파악할 수 없었다.
온라인 해커톤 기준으로 설명하자면
해커톤 참가자 선정 발표 > 팀 빌딩 > 개발 환경 세팅 > 멘토 선정 > 프로젝트 진행
순으로 대략적으로 언급할 수 있겠다.
팀 빌딩
팀 빌딩은 나 같은 경우에는 같은 부대에 해커톤에 참가한 인원과 함께 해커톤을 진행했기 때문에 온라인으로 별도의 팀 빌딩은 진행하지 않았다.
물론, 수상자들을 포함하여 많은 팀들이 각 다른 부대에 있는 인원들이 온라인으로 팀 빌딩하여 프로젝트를 진행하는 모습을 봤고, 체계적으로만 진행한다면 충분히 좋은 결과를 얻어내는 것도 볼 수 있었다.
국방오픈소스아카데미 측에서는 온라인으로 장병간에 연락이 어렵다는 것을 알고 있었기때문에,
팀 빌딩 게시판을 별도로 마련하여 그 게시판에서 팀 빌딩을 진행하는 것을 볼 수 있었다.
개발환경 세팅 (지원)
국방오픈소스아카데미 측에서, 온라인으로 이루어지는 점을 감안하여 개발환경 지원이 이루어졌었다.
Microsoft Azure CodeSpace 계정을 제공해 주었는데.. 솔직히 말하자면 나는 프로젝트 기간동안 초반을 제외하면 해당 환경을 사용하여 개발하지 않았다.
기본적으로 제공되는 사양 자체가 굉장히 낮았던 것으로 기억하고 있는데 물론, 150명 가량의 인원을 모두 커버하기에 한정된 예산 내에 어쩔 수 없는 문제라 판단 되었지만, 굳이 사용할 이유를 찾지 못하여 초기에 안내되는 개발환경 세팅 방법을 따라간 뒤, 필요하지 않다고 생각하여 사용하지 않았다.
물론, 현재에는 어떻게 바뀌었는 지 모르겠지만 솔직히 크게 바뀌었을 지는 잘 모르겠다.
현재 파트에서는 국방 오픈소스아카데미에서 지원한 부분에 대해서만 언급하고 실제로 내가 이용한 개발환경과 관련해서는 다음 게시글에서 언급 하도록 하겠다.
멘토 선정
멘토 매칭 관련해서도 사실 할 말이 많지만, 20년도에 처음으로 온라인으로 이루어진 만큼 시행착오가 많아보였다는 말로 함축 할 수 있을 것 같다.
물론, 멘토 매칭이 필수적으로 필요한 부분이라고 생각하고 사실 객관적으로 심사위원과 좀 더 가까운 눈 높이에서 심사할 사람이 필요하기 때문에 멘토의 도움 없이 수상으로 가는 것은 어려운 길이라고 생각한다.
우리 팀 경우에도 프로젝트 진행과 더불어, GitBook 작성, PPT 제작 등과 관련하여 많은 도움을 받았기 때문에 멘토가 매칭 되었다면 최대한 멘토분과 커뮤니케이션 하는 것을 추천한다.
다시 한 번 말하지만, 프로젝트를 진행하는 장병 입장에서 보는 것과, 심사위원 입장에서 보는 것은 사소한 것 부터 생각보다 많은 차이가 있다. 수상에 욕심이 있다면 멘토링에 적극적으로 참여하는 것을 추천한다.
생각보다 글이 길어져서 신청 후, 참가 과정, 선발 후 프로젝트 시작 전 까지의 과정과
프로젝트를 진행했던 과정으로 2부에 나누어 작성하도록 하겠다.
'ETC > 회고록' 카테고리의 다른 글
[Review] Google I/O Extended Seoul 2023 참석 후기 (0) | 2023.07.31 |
---|---|
[Review] Co-Vision 프로젝트 후기: 2020 군장병 온라인 해커톤#3 (0) | 2023.01.24 |
[Review] 2020 군장병 온라인 해커톤 참가 후기 (0) | 2021.10.14 |
[정보기기운용기능사 실기] 2021년 2회 정보기기운용기능사 실기 후기 (4) | 2021.07.24 |