3 minute read

국방부에서 개최한 군장병 오픈소스 해커톤에 선발되게 된 과정입니다.

2021 OSAM Hackathon Thumbnail

💻 군장병 공개SW 온라인 해커톤이란?

공개SW 해커톤 홈페이지

국방 분야에 활용 가능한 참신한 아이디어를 발굴하고, SW인재 발굴을 위한 대회입니다.

국방부에서 주최하는 소프트웨어 해커톤으로, 코로나19 상황으로 온라인으로 개최되는 해커톤입니다.

🧩 해커톤 요약

참가 분야: 병영생활 및 국방에서 활용 가능한 모바일 앱, 웹 서비스 또는 지정 과제

대회 기간: 2021-08-23 ~ 2021-10-20 (약 2달 간)

참가 방식: 온라인 개발 및 협업

참가 대상: 온라인 우수 교육생으로 선발된 군장병

2021 OSAM Hackathon Prize List

총 12팀이 수상을 하게되며, 과학기술정보통신부 장관상, 국방부 장관상 등 여러가지 상장이 수여됩니다.

🧐 참가 과정

2021 OSAM Hackathon Scoring System

해커톤 참가자 선발은 해커톤 필수과정 이론평가 점수 50%, 코딩테스트 점수 25%, 개발계획서 점수 25%를 합산 한 점수로 이루어집니다.

해커톤 공지에는 5개 분야별 30명씩 선발해 총 150명을 선발할 예정이라고 공지되어있었지만, 최종 합격자로 총 200명이 선발되었습니다. 2021년 해커톤 기준으로 분야별 합격자 수는 Web 85명, App 40명, IoT 15명, Cloud 18명, AI 42명이었습니다.

✍️ 해커톤 필수과정 이론평가

2021 OSAM Hackathon Application Page

Web, App, IoT, Cloud, AI 분야 중 해커톤에 지원할 분야의 강의를 듣고 홈페이지에서 이론 평가 시험을 응시하면 됩니다.

저는 App 분야로 지원해서 Dart 와 Flutter 강의를 들었습니다. 강의는 유투브에 올라온 튜토리얼 강좌와 국방오픈소스아카데미에서 외부 유투버 강사를 통해서 제작한 영상으로 구성되어 있었습니다. 2021년 해커톤 기준 전체 강의 목록은 여기에서 확인하실 수 있습니다.

필수 수강 강의는 아래의 4가지 강의였습니다. 각 강의당 80% 이상을 들어야 강의 수료로 인정됩니다.

App 분야 필수 강의 목록
  • Dart 언어 기초 (약 3시간 40분, 코드팩토리 유투브 영상)
    • Dartpad 로 설명하며 주요 기능, 문법 설명
  • Flutter 초급 (약 4시간, 데어프로그래밍 강좌)
    • 개발 환경 설정, Dart 언어, 기본 위젯 설명
  • Flutter 중급 (약 11시간)
    • 여러가지 예제 어플리케이션 개발 실습 (쇼핑카트, 에어비엔비, 카카오톡 등)
  • Flutter 고급 (약 8시간)
    • 블로그 앱 개발로 GetX, 상태관리, 서버 통신 등 실습

Tip: 수강 확인은 강의를 전부 시청하지 않아도 화면 왼쪽 아래의 학습완료 버튼을 누르면 수강한 것으로 표시됩니다.

강의는 퀄리티도 높고 설명을 잘 해주셔서 도움이 많이 되었습니다. 강의에서 아쉬웠던 점이 있다면 Dart 언어 기초 강의와 Flutter 초급 강의가 겹치는 부분이 있어서 비슷한 내용을 다시 들어야 했던 것이었습니다. 😓

이론평가 시험은 웹페이지에서 진행되었고, 40문항이 출제되었으며, 총 1시간의 시간이 주어졌습니다. 시험 진행에 대한 별다른 공지가 없는 것을 보니 오픈북 시험인것 같았습니다.

미루고 미루다가 마지막에 강의를 몰아서 듣게된 저는 (생각보다 내용이 많기 때문에 시간을 확보해놓고 천천히 들으시는 걸 추천합니다) 고급 강의 뒷부분을 자세히 못 들었는데, 고급 과정의 내용이 시험 후반부에 다수 출제되어서 뒷부분 문제를 틀렸습니다. 강의에서 소개한 컴포넌트와 같은 세부 내용까지 출제되니 높은 점수를 받기 위해서는 철저한 준비가 필요할 것 같습니다. 시험이 종료된 후에는 문제의 정답은 공개되지 않고 점수만 공개되었습니다.

💯 코딩 테스트

코딩 테스트는 프로그래머스에서 진행되었고, 난이도별로 4문항이 출제되었으며, 총 2시간의 시간이 주어졌습니다. 사용할 수 있는 언어는 C, C++, Java, Javascript, Python 이였습니다. 출제된 문제 유형은 아래와 같았습니다.

1번 문제: 문자열 추출

조건에 맞는 문자열을 추출하는 문제. 주어지지 않은 테스트 케이스를 생각해보고, 주어진 조건에 맞는 반복문을 작성해서 쉽게 해결할 수 있었습니다.

2번 문제: 문자열 변환

규칙에 맞게 문자열을 변환하는 문제. Python 의 dictionary 개념을 활용하면 쉽게 풀 수 있는 문제였지만 edge case 들이 있어서 디버깅에 시간이 생각보다 많이 걸렸습니다.

3번 문제: Backtracking 알고리즘

특정 규칙을 가진 게임의 정답이 주어지면 그 정답에 이르는 과정을 계산하는 문제. Backtracking 알고리즘을 사용해서 푸는 문제 유형이였습니다.

4번 문제: Pathfinding 알고리즘

최단 경로 유형의 기출 변형 문제. 특정한 이동 규칙에 맞는 최단 거리를 이동하는 시간을 구하는 문제였습니다. Pathfinding (A* search) 알고리즘을 사용해서 푸는 문제 유형이였습니다.

저는 Python 을 사용해서 문제 풀이를 했고, 1번과 2번 문제에서 각각 40분 정도를 사용하고 남은 30분동안 3번 문제를 시도하던 중 시간 초과로 코딩 테스트를 마무리했습니다. 1번과 2번은 100점, 3번 문제는 약 10점으로 총점 210점으로 테스트를 마무리했고, 총 등수는 431명 중 105등을 기록했습니다. 코딩테스트 점수 1등부터 12등까지는 모두 400점이었고, 특히 1등을 기록하신 분은 40분도 안되는 시간에 모든 문제를 마무리하셨습니다. 😮

코딩테스트 리더보드는 여기에서 확인하실 수 있습니다.

🧾 개발계획서

아이템 개요, 계획 및 목표, 효과 및 전망을 웹사이트 상에서 텍스트 형식으로 입력해서 제출하는 형식입니다. 저는 군 행정 업무에 도움이 될 수 있는 Web / App 서비스 아이디어를 제안했습니다. 계획서는 최대한 간결하게 다음과 같은 형식으로 작성했습니다.

아이템 개요

어떤 서비스인지 한 줄로 요약하고, 서비스를 통해 개선되는 점과 주요 기능을 간략하게 작성했습니다.

계획 및 목표

처음에는 서비스의 성장 계획을 주 목표, 1,2,3차 목표로 나누어서 작성했습니다. 그리고 해커톤 기간 동안 대략적인 프로젝트 진행 계획을 작성하고, 해커톤의 취지에 맞는 목표를 설정했다고 작성했습니다. 마지막으로 팀원별 역할 분배도 추가했습니다.

효과 및 전망

서비스가 활성화됨에 따라 예상되는 긍정적인 변화와 서비스가 확장된다면 군 전체에 도움이 될 것이라는 전망을 설명했습니다.

🙋‍♂️ 추가 정보

전년도 수상작들은 github.com/osamhack2020 에서 확인하실 수 있습니다.

홈페이지에 있는 챗봇을 통해서 관계자분들에게 편하게 질문을 하고 빠른 답변을 받을 수 있었습니다. 👍

해커톤을 진행하면서 더 많은 글을 올릴 예정입니다! 많은 관심 부탁드립니다. 🙂

궁금한 점이 있으시거나 내용에 수정이 필요한 경우는 ntcho13@gmail.com 로 연락주시면 답변드리겠습니다.

Comments