알고리즘 입문(초보)를 위한 가이드 (1편) : 코딩테스트 기초지식

태빵·2021년 8월 17일
34

입문자를 위한 알고리즘 공부 방법 정리

알고리즘 공부를 처음 입문하게 된다면 어떤 것부터 공부해야될 지 막막할 수 있다.
나는 대학교 시절 문제를 간단히(실버1~3) 정도 풀었던 기억이있었으나, 군대를 2년넘게 다녀오면서 기억이 소각되어 결론적으로는 처음부터 다시 익혀야 되는 상황이었다.

내가 겪었던 시행착오를 최소화 하고 입문자를 위해 삽질하지 않게 하기위한 가이드 작성을 위해 참고할 만한 링크, 좋은 사이트 정리 등을 하고자 한다.

가이드 하고자 하는 방향

목표

  1. 기업용 코딩테스트 합격할 만한 수준에 도달하기
  2. 신입 개발자 면접때 적어도 알고리즘으로 탈락하지 않게하기 위한 방향과 가이드

방향성에 대한 생각

  • 결론적으로 기업용 코딩테스트는 얼마나 응시자가 논리적으로 문제를 풀 수 있는지 사고력과 응용력을 판단하는 시험이다.
  • 특정 알고리즘을 알아야만 문제를 풀 수 있다면 해당 시험은 출제를 잘못 한 것이다.
  • 기본적인 알고리즘과 자료구조를 알고있다고 가정할 때 이를 간단히 응용해서 풀 수 있을정도의 수준으로 보통 출제된다.
  • 풀이시간은?
    • 어려운 구현문제의 경우 1시간30분을 최대로 잡고 공부한다.
    • 나머지 빡센구현이 아닐경우 최대1시간을 잡는다.

공부방법

  • 공부방법은 자신이 꾸준히 2개월이상 문제를 풀 수 있는 방법이 있다면 뭐든 좋다.
  • 하지만 참고를 위해 내가 했던 방식을 정리한다.
  1. 모든 알고리즘 문제풀이를 github에 올렸다
  2. 테마별로 최대한 다양한 문제를 접하려고 했다.
    • 백준 기준 Gold1까지 올렸다
    • 거의 모든 코딩테스트가 있는 기업에 지원하여(보통 지원하면 코테는 보게 해준다) 시험환경을 익혔다.
    • 문제가 1시간 이상 안풀리면 해설을 참고했다.
    • 해당 문제를 체크해 놓고 나중에 꼭 다시 풀어보았다(알람설정)
  3. 문제를 처음 접했을 때, 항상 완전탐색하면 iteration이 얼마나 돌지? 생각하고 대략 5억번 미만 이면 완탐으로 구현했다.
  4. 언어는 c++을 사용했지만, 유사시를 위하여 python도 공부해두었다.
  5. 개발환경은 vscode를 주로 사용했지만, 실전을 위해서 프로그래머스환경, swea 환경을 익혔다.

    시간이 정말 부족한 경우 프로그매머스 코딩테스트 고득점KIT을 풀면 된다

입문자용 강의 정리

  1. 동빈나 님의 실전 알고리즘 강좌 : 유튜브 링크
    • 초심자가 듣기 정말 좋고 설명이 깔끔하며 문제를 추천해주셔서 풀어볼 수 있어서 아주좋다.
    • 정렬, DFS/BFS, Dynamic, Stack, Queue, Greedy, Graph, String 등 모든 주제를 폭넓게 다루고 있다.
  2. C++ Algorithms and Datastructure : 유투브 링크
    • 순수하게 기법이 아닌 학문으로 알고리즘을 설명해준다
    • 대부분 pesudo 코드로 작성하여 알려주지만, 면접준비 등에 많은 도움이 된다.

참고할 만한 사이트 정리

  1. 프로그래머스

    • 대부분의 기업용 코딩테스트가 프로그래머스 환경에서 이루어진다.
    • 이외의 환경은 삼성(swea환경), codility환경(프로그래머스와 유사), 구름 온라인ide환경 이었다.
    • 특히, 카카오 기출을 풀 수 있을정도가 된다면 대부분의 코딩테스트를 가뿐히 통과할 수 있을 정도라고 생각한다.(문제, 해설 모두제공)
  2. 백준

    • 코딩테스트 준비의 표본
    • 상단의 문제집을 참고하면 삼성기출문제, 유형별 추천문제등을 풀 수 있다.
      • 삼성준비를 한다면 기출문제는 꼭 다 풀어보자!
    • 그룹을 생성하고 스터디원끼리 시험환경으로 서로 문제를 풀 수 있다(같이 공부하기 정말 좋음!!)
    • 백준기준 골드4~5정도가 된다면 코딩테스트에 도전해 볼만한 실력이라고 생각하고, 골드1~2정도가 된다면 대부분의 코딩테스트에 합격할 것이라고 생각한다.
  3. leetcode

    • 이런말이 있다.

      "A leetcode a day keeps the unemployment away."

    • easy ~ medium 문제를 풀 정도면 충분하다고 생각한다.
    • top interview questions 추천
    • 실제로 면접에서 간단히 물어볼 만한 수준의 easy문제들을 기업에서 leetcode를 보고 차용하는 것 같다.
  4. 책추천 : Cracking the coding Interview

    • 해설이 책의 절반이상이다.
    • 코딩테스트 뿐만 아니라 면접 전반에 대한 가이드가 잘 나와있어서 도움이 꼭 될 것이다.
    • 간단한 면접준비에 대한 내용도 담겨있다.
  5. 삼성 SW Expert Academy : SWEA

  • 삼성환경과 유사하게 시험을 칠 수 있다.
    • 좋은 문제가 많긴 하지만 어떤 문제가 좋은문제인지 판별하기가 어렵다
    • 추후에 swea추천문제를 다루겠다.

시간이 남는다면...
5. codeforces
- 일주일에 한 번 정도 대회가 열리고 div2용 대회에 참전한다면 그나마 풀수있을 정도의 문제가 출제된다
- 세상에 굇수가 많다는 것을 새삼 느끼게 해 주어 많은 자극이 되는 사이트이다.
6. GeekforGeeks : Interview Preparation for Software Engineer

추후 정리할 자료

  • 유형별 문제 추천
  • 할 수 있다면 알고리즘에 대해서 코드와 함께 설명글
profile
hello world

2개의 댓글

comment-user-thumbnail
2022년 2월 10일

흥미롭네요. 감사합니다.

1개의 답글