1 분 소요

종만북 기초 자료 구조 개관을 읽고 정리한 글입니다. 평소 자료구조에 대한 지식이 없었고 왜 공부해야 하는지 잘 몰랐습니다. 인턴 생활하면서 자료구조에 신경써서 개발을 해 본적이 있는지 복기해봤는데 전혀 없었습니다.

왜그런지 생각을 해봤는데,

  1. 그냥 지식이 없어서입니다. 자료구조의 중요성과 종류들을 거의 몰랐기 때문에 자료구조를 떠올릴 계기조차 없었습니다.

  2. 두번째는 ChatGPT에 의존해서 프로그래밍을 많이 했습니다. 물론 데드라인이 있는 프로젝트에서는 빠르게 개발을 할 수 있게 도와줘서 고맙지만 성능을 고려했을 때는 좋지 않은 것 같습니다.

이번 챕터에서는 자료구조를 알아야 하는 이유에 대해서 배운 것 같습니다.

자료구조를 왜 배워야 할까

자료구조를 배워야 하는 이유는 추상화와 최적화 때문입니다.

추상화

추상화는 현실 세계의 개념이나 구조를 프로그래밍에서 사용할 수 있도록 자료구조로 표현하는 과정입니다. 현실세계에서 사용되는 개념은 프로그래밍으로 직접 구현하기에는 번거롭고 어렵습니다. 추상화한 자료구조는 개념에서 중요한 뼈대만 뽑아서 이름을 붙이고 다른 개발자가 사용하기 쉽게 설계합니다.

예를 들어 Stack, Queue, Tree 등등이 있습니다. 이미 Queue 라는 거대한 뼈대에 데이터를 넣고 빼는 연산을 하기 쉽게 설계해놨습니다. 이때 넣고 빼는 연산은 인터페이스로 개발자와 소통을 할 때 도와주는 역할도 합니다.

최적화

최적화는 프로그램 속도를 높이기 위한 것입니다. 추상화를 통해 코드를 작성하기 쉽게 만들어도 최적화를 고려하지 않으면 연산을 할 때 속도가 느려질 수 밖에 없습니다.

예를 들어 임의의 자료구조에서 데이터가 있는지 확인하기 위한 인터페이스로 isContain() 이라는 것이 있을 때 배열에 있는 모든 원소를 돌아가면서 확인하는 방식으로 구현을 했다면 데이터의 개수가 많아질수록 선형적으로 느려지게 됩니다.

하지만 HashMap을 이용한다면 O(1) 만큼의 속도로 데이터를 찾을 수 있겠죠. 물론 더 고려해야 할 것이 있지만 러프하게 생각하면 그렇습니다.

해시를 이용한 방법이 선형탐색 방법보다 더 복잡하지만, 더 빠른 시간에 같은 일을 처리할 수 있습니다. 이처럼 자료구조는 어떤 방식으로 “표현”할까만 정의하는 것이 아니라 어떤 방식으로 “구현”하는 것도 중요합니다. 그래서 자료구조와 알고리즘은 같이 사용되게 됩니다.

결론

자료구조를 배워야 하는 이유는 추상화와 최적화 때문입니다. 현실에 있는 개념을 프로그래밍에서 사용할 수 있도록 자료구조로 표현을 하고 추상화한 행위를 알고리즘을 통해서 동작 속도를 빠르게 할 수 있습니다. 앞으로 정말 많은 자료구조를 배우게 될텐데 기대가 됩니다. 자료구조를 인지하고 정부주소데이터 전처리하는 프로젝트를 했다면 더 좋게 완성할 수 있었을텐데 조금 아쉽네요.

카테고리:

업데이트: