Introduction

본 포스트는 알고리즘 학습에 대한 정리를 재대로 하기 위하여 남기는 것입니다. 더불어 기본 내용은 나동빈 저의 〖이것이 취업을 위한 코딩 테스트다〗라는 교재 및 유튜브 강의의 내용에서 발췌했고, 그 외 추가적인 궁금 사항들을 검색 및 정리해둔 것입니다.

코딩테스트란 무엇인가?

코딩 테스트란?

  • 기업, 기관에서 직원이나 연수생을 선발하기 위한 목적으로 시행되는 시험입니다.
  • 공채를 하는 기업에서 코딩을 주로 이용합니다.
    • 문제 해결 역량을 평가하며
    • 채점 시스템을 통해 응시자 수를 줄이는 효과를 갖고 있습니다.

코딩 테스트의 유형

  • 온라인 코딩 테스트
    • 인터넷을 활용해 프로그래밍 역량을 평가하여 응시자를 선별하는 방식입니다.
    • 대체로 타인과 문제풀이를 공유하지 않는 선에서 인터넷 검색을 허용합니다.
  • 오프라인 코딩테스트
    • 시험장에 방문하여 치르는 시험입니다.
    • 대체로 인터넷 검색이 허용 되지 않고, 회사에서 제공하는 환경에서 진행됩니다.

온라인 저지란?

  • 체력을 키우기 좋은 훈련장 같은 느낌으로 이해하면 될 것 같습니다. 국내외 유명 사이트들로 적극적으로 활용하고 싶다고 생각하고 있습니다.
  1. 해외
    1. 코드포스(Codeforce) : 경쟁적 프로그래밍 대회를 주기적으로 개최하고, 올림피아드 참가자들이 다수 사용하는 사이트. 지난 대회 문제들을 열람할 수 있고, 모의 참가 가능하다는 것이 특징입니다.
    2. 탑코더(TopCoder) : 디자이너, 개발자, 데이터 사이언티스트 등 경쟁력 있는 프로그래머들의 개방형 글로벌 커뮤니티 입니다. 코드포스와 유사한 토너먼트도 존재합니다. 상당한 난이도가 있고 수상 시 구글이 모셔간다고…
    3. 릿코드(LeatCode) : 위와 유사한 계열 이라고 생각하면 될 듯 합니다. 해외 취업을 위해 활용되는 경우가 크며, 인터뷰 준비시간을 단축하기 위해 프리미엄 계정으로 컨텐츠 학습을 하는 것이 해외 취업에는 추천된다고 보시면 됩니다.
    4. 코드 셰프(CODECHEF) : 매월 코딩 대회가 열리며, 여섯가지 난이도로 구분되어 있다는 점에서 도전해봄직 하다.
  2. 국내
    1. 백준 온라인 저지(Baekjoon Online Judge) : 코딩을 하는데 모를리가 없는 사이트이죠. 2010년 당시 서강대 컴공과 최백준에 의해 개설된 알고리즘 트레이닝 사이트입니다. 문제가 정말 많고, 알고리즘 학습에 있어 여러 사람들의 코드를 볼 수 있다는 장점이 있습니다.
    2. 코드업(CodeUp) : 정보과학의 기초, 심화 및 한국정보올림피아드 대비 등 정보과학 예제들을 퓰어볼수 있는 알고리즘 트레이닝 사이트 입니다.
    3. 프로그래머스(Programmers.co.kr) : 코딩 알고리즘 학습 뿐만 아니라 채용 중인 포지션 및 프로필 등록이 가능한 사이트입니다. 여러가지 면에서 종종 탐색하면 좋을 만한 사이트 입니다.
    4. SW Expert Academy : 삼성에서 운영하는 곳입니다. 다채로운 학습 콘텐츠를 포함하고 있습니다.

코딩테스트 응시자 설문 조사

  • 알고리즘 문제 풀이 방식의 코딩테스트에서 가장 유리한 프로그래밍 언어는 무엇인가?
    • C : 6%
    • C++ : 44%
    • 파이썬 : 36%
    • 자바 : 8%
    • 기타 : 6%
  • 이런 기준 와중에 파이썬을 써야 하는 이유는?
    • 파이썬의 편리한 구조
    • 파이썬 기본 라이브러리가 가진 다양한 기능들
    • 알고리즘 대회가 아닌 기업에서 진행시 파이썬이 편리하게 작업이 가능하다.
    • 시간이 많이 걸리는 경우를 생각하면 자바는 하지 않는게 낫다.
    • 코테를 위한 처음 시작하는 경우는 파이썬이 간결하고 빠르게 익힐 수 있다.
  • 개발 방식의 코딩테스트에서 가장 유리한 프로그래밍 언어는?
    • 파이썬 : 36%
    • 자바 : 20%
    • … 더 이상 이야기 안해도 될것 같죠?
  • 시험의 유형
    • 과제형으로 기한을 두고 구현해오라는 경우가 있습니다.
    • 과제형보단 짧은 시간으로 오프라인으로 모여서 지원자들에게 개발을 요구하는 방식이 있습니다.

온라인 개발 학습 환경 추천 사항

  • 리플릿 : 온라인으로 치루어지는 코딩 테스트에 참여가 가능하며, 온라인 상황에서 바로바로 코딩을 할수 있다는 점에서 활용이 용이합니다.

  • ⭐️ 파이썬 튜터 : http://pythontutor.com/visualize.html

    괴에에에엥장히 도움이 됩니다. 짜여진 로직을 시각화 해주어서 코드 전개를 명확하게 이해할 수 있어서 훌륭합니다. 처음 시작하는 입장에선 굉장히 이해하는데 도움이 많이 됩니다.

  • 파이참 - 대표적인 오프라인 개발환경, 디버깅, 로컬에서관리하면서 해보고 싶으면 써보길 추천합니다.

  • Dev C++ - 파일 하나만 작성할 때 편리하며, 바로바로 컴파일로 확인할 수 있으니 오프라인 환경의 코테를 보듯 사용할 수 있는 IDE 입니다.

자신 만의 소스 코드 관리

  • 알고리즘 코딩테스트를 준비하고 있다면 자신만의 소스코드를 관리하는 습관을 들이면 좋다고 합니다.
  • 자신이 자주 사용하는 알고리즘 코드를 라이브러리화 하면 좋다고 합니다.
  • 팀노트 예시!(나동빈 님의 레포지터리 입니다.) : https://github.com/ndb796/Python-Competitive-Programming-Team-Notes

2019년 주요 코딩 테스트 유형

  • 아주 최신 정보는 아니지만, 일단 정리해 두었습니다.
  • 응시 시간은 보통 2 ~ 5시간이며, 빈도 유형은 아래와 같습니다.
  • 구현(33%) > BFS/DFS(20.9%) > 그리디(19.8%) > 다이나믹 프로그래밍, 정렬 (각각 8.2%) > 정렬(8%) > 이진탐색, 최단경로, 그래프 이론…

🧑🏻‍💻 알고리즘 박살내기 시리즈🧑🏻‍💻