왜 많은 기업들이 채용 과정에 코딩 (알고리즘) 테스트를 볼까요? 🤯
우리가 배우는 프로그래밍 언어는 컴퓨터 프로그래밍에서 어떠한 알고리즘을 구현하기 위해 쓰여지는 언어입니다.
여기서 알고리즘이란, 어떤 문제를 해결하기 위한 자세한 방법을 말하는데요,
즉, 컴퓨터 알고리즘
이란 컴퓨터가 어떤 문제를 해결하기 위해서 컴퓨터가 이해할 수 있는 방식으로 정리되어 있는 해결 방법입니다.
하나의 문제에 여러가지 해결 방법이 있을 수 있습니다.
방법 1은 문제를 해결하는데 5명의 사람이 하루동안 작업해야하고,
방법 2는 문제를 해결하는데 1명이 1시간만 작업하면 된다면, 방법 2가 훨씬 좋은 해결방법이라고 할 수 있겠죠?
여기서 문제 = 만들려고 하는 프로그램 또는 기능, 해결방법 = 컴퓨터 알고리즘이 됩니다.
이처럼 자료구조와 알고리즘에 대한 이해가 있다면, 구현하고자 하는 기능을 보다 쉽고 효율적으로 만들 수 있습니다.
👩🏻🏫 그렇다면 알고리즘에 대한 공부는 어떻게 하는 것일까요? '코딩 테스트' 문제를 열심히 많이 풀어보면 될까요?
답은 🔺 코딩 테스트 문제를 풀어 테스트 케이스를 통과하는 것만으로는 알고리즘에 대해 공부했다고 하기 어렵습니다.
내가 작성한 코드가 코딩 테스트에서 주어진 테스트 케이스들은 통과했더라도,
내 코드보다 더 빠르게 동작하고, 메모리를 덜 차지하는 알고리즘이 있을 수도 있으니까요.
많은 기업들이 채용 과정으로 코딩 테스트를 보는 이유는
프로그래밍 언어로 정확한 코드를 작성할 줄 아는지,
컴퓨팅적 사고를 할 줄 아는지를 확인하는 것 외에도
코드 속에 사용한 알고리즘을 통해 면접자가 자료구조와 알고리즘, 시간과 공간 복잡도 등에 대해 이해가 있는지 확인해보기 위해서일 것입니다.
따라서 공부하고 있는 프로그래밍 언어를 기술적으로 어느정도 사용할 줄 안다면,
코딩(알고리즘) 테스트를 준비할 때 무조건 테스트 문제만을 많이 풀기보다는 자료구조와 알고리즘에 대한 전반적인 공부를 병행하는 것이 좋습니다.
자료구조를 공부할 때에는 다음과 같은 포인트들에서 해당 자료구조가 어떠한 특징을 가지는지를 생각해보면서 공부하면 좋습니다.
- Order : 자료구조 안의 데이터들의 순서를 보장하는지
- Unique : 중복된 데이터가 들어갈 수 있는지
- Search : 검색할 때 얼마나 효율적인지
- Modification : 구현하려는 기능에 따라 수정할 때 얼마나 효율적인지
알고리즘를 공부할 때에는 다음과 같은 포인트들을 생각해보면서 공부하면 좋습니다.
- InputSize : 인풋의 사이즈가 커질 수록 Big O가 어떻게 변화하는지
- Space and Time : 공간과 시간 복잡도는 어떤지
- DataStructure : 어떤 자료 구조를 통해서 이 알고리즘을 쓰는게 좋은지
추천하는 알고리즘 공부 순서
- 그리디알고리즘
- 탐색(완전탐색, BFS, DFS) 알고리즘
- 기본 동적 프로그래밍
참고할 수 있는 유튜브 무료 강의 - 나동빈
참고 : https://www.youtube.com/watch?v=ukkLCl9yBvE
https://www.youtube.com/watch?v=okHGRlgR8ps
https://ko.wikipedia.org/wiki/프로그래밍_언어
https://www.codeit.kr/learn/955