자료구조란 데이터를 저장하는 여러가지 방법을 의미하며, 프로그래밍을 할 때 각 데이터의 특성 및 용도 등에 맞는 적절한 자료구조 방법을 선택해서 데이터를 저장하게 됩니다. 자료구조는 크게는 단순구조, 선형 자료구조와 비선형 자료구조로 나뉩니다
- 단순 구조 : 2진수, 정수, 실수, 문자, 문자열,
- 선형 자료 구조 : 배열, 연결리스트, 스택, 큐, 데크, 힙 등
- 비선형 자료 구조 : 트리, 그래프

각각의 자료구조는 다른 특성을 가지고 있습니다. 그렇기 때문에 자료구조에 대한 특성을 잘 이해하고 있으면, 처한 상황에 맞추어 적합한 자료구조를 선택하고 효율적으로 문제를 해결할 수 있습니다.
알고리즘이란 어떤 문제를 해결하기 위한 절차를 의미합니다. 그리고 특정 상황에서 사용하는 일련의 방법이나 절차를 공식화한 형태를 말합니다. 유사한 상황에서 문제를 빠르게 해결할 수 있는 방법이 있다면 이를 공식화해서 알고리즘의 한 형태로 명명하고 있습니다. 프로그래밍에서 알고리즘을 구현할 때 어떤 문제를 어떻게 해결할지 그 방법을 설계하고 구현하게 됩니다.
알고리즘이 중요한 이유는 시간 복잡도와 공간 복잡도를 적절히 조절해 코드의 성능을 향상 시킬 수 있기 때문입니다. 메모리 성능이 발달한 요즘에는 공간 복잡도를 약간 손해보더라도 시간 복잡도를 효율적으로 구현하기도 합니다.
결국 자료구조와 알고리즘의 목표는 빠르고 효율적으로 문제를 해결하기 위함입니다. 상황에 맞는 적절한 자료구조와 알고리즘을 선택해서 실무에 적용하는 능력을 익힌다면 좋은 개발자로 성장할 수 있을 것입니다.
이미지 출처