자료구조와 알고리즘 소개


알고리즘 자료구조를 배워야하는 이유

왜 많은 회사에서 개발자를 고용할 때 자료구조와 알고리즘 테스트를 하는 것일까요? 많은 개발자들은 자료구조+알고리즘 테스트에 많은 부담감을 가지고 있습니다. 물론 저를 포함해서요. 개인적으로는 개발자가 꼭 자료구조와 알고리즘을 잘해야한다고 생각하지는 않습니다. 어떤 업무의 개발자인가 따라 다르기는 하지만 이론에서 배우는 자료구조와 알고리즘은 대부분의 개발자가 실제 업무에서 이론을 펼쳐볼 기회가 흔하지 않습니다(이론에서 배우는 알고리즘 대부분 라이브러리로 잘 구현됨). 하지만 그렇다면 왜 자료구조와 알고리즘을 공부해야하는 것일까요? 제가 내린 답은 다음과 같습니다.

목록으로

1. 효율적인 라이브러리 사용

개발자 개인의 입장

우리가 사용하는 많은 라이브러리들은 자료구조 알고리즘의 이론을 바탕으로 잘 구현되어있습니다. 그래서 우린 간혹가다가 편리함에 취해서 아무 라이브러리나 호출하여 사용합니다. 리스트를 사용했을 경우에 색인 바탕으로 검색을 할 경우에는 ArrayList를 사용하고 삽입, 삭제가 자주 일어날 때에는 LinkedLis 를 사용하는 것이 유리합니다. 자료구조의 이론적인 부분을 모른다면 개발을 주먹구구식으로 할 수 밖에 없습니다.

2. 역량의 공통 분모

고용주인 회사의 입장

스타트업의 같은 경우에는 필요한 분야가 대부분 확정되어있습니다. 그래서 개발자를 구할 경우에도 해당 분야의 전문가를 뽑기를 원합니다. 하지만 대기업 같은 경우에는 이야기가 좀 다르죠. 개발자가 아닌 일반 업무의 경우 사람을 뽑을 때 ‘학벌’, ‘학점’, ‘스펙’ 등을 보고 추려서 면접을 봅니다.(이게 인간적이거나 비인간적이거나 관계없이 실제로 일어나는 일입니다) 대기업에서 개발자를 선발할 때 이런 학벌, 학점과 비슷한 것이 바로 ‘자료구조’‘알고리즘’입니다.

이런 두가지 이유로 우리는 자료구조와 알고리즘을 공부해야 합니다. 저는 첫번째 이유로 공부합니다. 첫번째 이유 때문에 공부하는 것이 구직하는 입장과 채용하는 회사(혹은 채용한 회사)입장 모두에게 도움이 된다고 생각합니다. 개인적으로는 회사들도 자료구조와 알고리즘 테스트 보다는 실제로 개발 중에 올바른 알고리즘을 택할 수 있는지 능력을 검증하는 방향으로 바뀌었으면 좋겠습니다.

목록으로