이번글은 길벗의 개발자 리뷰어에 당첨돼 읽고 나면 진짜 쉬워지는 자료 구조 책을 읽고 난 후 소감을 정리한다.
개발자에게 자료구조가 왜 중요할까?
데이터베이스는 어떻게 동작할까?
흔히 디스크에서 데이터를 읽어올때는 많은 시간이 걸린다.
윈도우를 사용하다보면 원하는 폴더나 파일명을 검색할 때 많은 시간을 소요하는 경험을 해 본 사람들이 많을것이다.
그래서 데이터는 저장하는게 끝이 아니라 유지보수(저장되거나 삭제되거나 추가되거나 불러오거나) 해야한다.
그리고 데이터는 실제로 저장하는 요청보다는 가져오는(GET)이 제일 많다.(70퍼센트 정도 된다고 한다.)
그러므로 데이터를 어떻게 저장해서 불러오려면 올바른 자료구조를 선택해야한다.(데이터베이스는 올바른 자료구조를 선택하는것보다 더 많은 기능을 제공한다고 한다.)
Stack이나 Queue를 알아두면 실제로 이를 적용해야할때도 생긴다.
가령 우리가 프론트엔드 개발을 할때 클릭한 순서를 기억해서 맨 마지막 클릭순서를 순차적으로 보여줘야고 해야한다.
이 때 Stack의 개념을 알고 있으면 LIFO(Last In First Out)을 사용해 배열을 이용해서 쉽게 구현할 수 있다.
그리고 만약 우리가 유저의 행동을 기반으로 토스트창을 구현해야하고 여러개의 토스트창이 순차적으로 렌더링할때 먼저 사라져야하는 토스트창의 내용을 구해야할 수 있다.
이 때 Queue의 개념을 알고 있으면 FIFO(First In First Out)을 사용해 먼저 요청온 토스트 컴포넌트를 unmount할 수 있다.
알고리즘 코딩테스트를 진행할때 자료구조는 필수이다. 적절한 자료구조를 사용해야 최적의 시간과 공간 복잡도를 사용해서 적절한 성능의 문제 해결법을 제공할 수 있다.
이 책에서 정말 좋았던점은 단순하게 이론을 나열하는것이 아니라 도입부에 왜 해당 알고리즘이 필요한지와 챕터의 끝에 해당 알고리즘이 중요한 이유도 같이 설명해준다.(아래 사진 참조)
순서가 적절하게 잘 선택되있어서 선행돼야할 자료구조를 앞장에 배치하고 심화된걸 뒤에 배치돼있어서 적절하게 공부할 수 있다.
예시코드가 작성돼있다.
이론만 있으면 이해하기 어렵지만 실제 코드로 어떻게 해당 자료구조를 구현해야할지 예시코드가 있어서 조금 더 이해하기 쉬웠다.
운좋게 비전공자로 취업에 성공했지만 사실 취업했다고 끝이 아니라고 생각한다.
개발을 하다보면 전공지식이 쓰일때가 꽤 많다.
사실 이런 지식들을 취업하고나서 공부하는건 쉬운일이 아니고, 나도 이런 지식들을 취준생때 했던게 값지게 남아 지금도 유효있게 적용하는 경우가 있다.
그래서 물론 당장에는 크게 중요하다고 느껴지지 않지만 특히 개발자에게 중요한 네트워크, 자료구조, 알고리즘은 꼭 학습하면 좋다고 생각하여 요즘 공부하고 있다.
그래서 이 지식을 정확히 습득하여 우리가 실제 프로젝트에서 발생하는 문제들을 효율적으로 해결해야할 필요가 있다.
모든 자료구조는 복잡성, 성능, 메모리 사용량, 정확성에 대해
서로 다른 트레이드오프를 제공한다. - 책 내용 중 -