♻️ 개발자로 재활용/🗃 Archive

자료구조(1) : 자료구조(Data Structure)를 왜 알아야 하나요?

BuleRatel 2023. 1. 12. 22:13

‘자료구조’라는 말이 조금 생소하게 느껴질 수 있습니다. 컴퓨터 과학에서 자료구조란, 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미합니다. 자료구조를 잘 알수록 데이터를 체계적으로 저장하고, 효율적으로 활용할 수 있습니다.

 


 

자료구조와 데이터, 알고리즘

책장에 여러 권의 책을 꽂아놓는 모습을 상상해봅시다. 마구잡이로 꽂아놓으면, 나중에 원하는 책을 찾는데 시간이 많이 걸리게 됩니다. 보다 효율적으로 책을 찾고 활용하기 위해 문학, 인문학, 경제학 등 분야별로 규칙을 정해 정리하려고 합니다. 그리고 분야별로 나눈 책은 가나다 순서대로 꽂아 놓는다고 생각해 봅시다.

 

만약 이 중 유발 하라리의 ‘사피엔스’를 찾고 싶다면 어떻게 할까요? 책이 정리되어 있는 규칙을 알기 때문에 인문학 분야를 고르고, 앞에서부터 ‘ㅅ’이 나올 때까지 책을 훑는 게 가장 빠른 방법일 겁니다.

 

이때 책은 ‘데이터’가,

책이 정리되어 있는 규칙은 ‘자료구조’가,

책을 찾는 가장 빠른 방법은 ‘알고리즘’이 됩니다.

 

- 데이터

문자, 숫자, 소리, 그림, 영상 등 실생활을 구성하고 있는 모든 값

 

- 자료구조

여러 데이터의 묶음을 저장하고, 사용하는 방법을 정의한 것. 만약 책장에 아무렇게나 책을 꽂아놓은 것처럼 데이터가 정리되지 않는다면 활용하기도 어려울 겁니다. 때문에 필요에 따라 특징을 파악하고, 정해진 규칙에 따라 정리하고 저장해야만 데이터를 더 잘 활용할 수 있습니다. 

 

- 알고리즘

어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것

 


 

왜 자료구조를 알아야 하나요?

앞서 예시를 들었듯 책을 분야별로 분류하고 가나다 순서대로 정리했다는 사실을 알고 나니, 책을 더 빨리 찾을 수 있었습니다. 이렇듯 자료구조를 빨리 파악하면 문제를 더 빠르게 해결할 수 있습니다.

현업에서는 많은 문제를 마주치게 됩니다. 자료구조를 많이 알수록, 문제를 해결하는 데 가장 적합한 자료구조를 빠르게 찾을 수 있고, 이를 토대로 문제를 빠르고 정확하게 해결할 수 있습니다. 알고리즘과 밀접한 연관성이 있지요. 즉, 자료구조를 많이 아는 개발자알고리즘 로직 또한 잘 짜는 개발자라고 할 수 있습니다.

 

- 자료구조를 많이 알수록

- 문제를 해결하는데 적합한 자료구조를 빨리 찾으며

- 이를 토대로 문제도 빠르게 해결할 수 있다!

 


 

자료구조의 분류

여러 상황에 따라 데이터를 효율적으로 다룰 수 있는 방법이 많이 연구되었습니다. 이런 방법을 모두 모아 '자료구조'라는 이름을 붙여 분류했습니다. 이미 배웠던 '배열(Array)' 역시 자료구조 중 하나입니다. 배열을 이용하면 어떤 데이터를 활용하기 좋은지, 데이터를 찾는 방법이 무엇인지 생각해 보세요.

 

 

위의 자료 구조가 코드에서 어떻게 동작하는지 보고 싶으면 Data Structure Visualizations을, 시각적으로 이해하고 싶으면 Visualgo를 참고해 보세요.

 

Data Structure Visualizations에서 Stack 동작을 구현하는 모습
Visualgo에서 자료구조를 시각화해서 보여주는 모습