[기초 알고리즘 #01] ADT는 뭐고 자료구조는 뭔데?
저희가 사용하는 모든 프로그래밍 언어는 다양한 내장 데이터 타입을 갖고 있습니다.
예를들어, int
, float
, bool
과 같은 것들이죠.
하지만, 몇몇 사용자들은 요구되는 알고리즘을 구현하기 위해 직접 데이터 타입을 정의해야할 필요를 느끼기 시작했습니다.
그리고 이렇게, 사용자에 의해 정의된 자료형을 ADT
라고 할 수 있겠습니다.
1. ADT(Abstract Data Type)
ADT
는 추상 데이터 타입입니다.
구현하고자 하는 자료구조의 기능을 논리적으로 정의해둔 것이죠.
사용자 입장에서는 내부의 동작원리는 이해할 필요없이 인터페이스 를 통해서 간편하게 자료구조를 사용할 수 있습니다.
이게 무슨말이야…!
라고 하실 수 있는데요.
이 때 저희가 알아봐야할 건 추상화(Abstraction) 의 개념입니다.
1-1. 추상화
저희가 “저 표현 되게 추상적이다~” 라고 말을 할 때는,
‘뭔가 알 것 같긴한데 애매모호한데?!’ 의 상황인 경우가 많죠.
컴퓨터 공학에서의 추상화는 조오금 다릅니다.
추상화는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것 을 말합니다.
실제 기능을 구현하는 것의 단계가 아니라, 개념에 대한 정의, 기능에 대한 아이디어 등 정도를 정의해두는 것이죠.
⭐ 즉, 어떤 기능이 동작하기 위한 복잡한 내부 구조의 명세 및 구현을 배제하고 더 쉽고 명료하게 이해하기 위한 정의 단계 라고 볼 수 있습니다.
객체지향 언어들에서는 abstract
, interface
와 같은 문법을 통해서 class
를 추상화 하기도 합니다.
2. 자료구조(Data Structure)
자료구조는 효율적으로 자료를 접근하고 수정하도록하기 위해 자료를 잘 묶고, 잘 저장한 것을 뜻합니다.
정확히는 데이터의 모임, 관계, 함수, 명령을 기반으로 자료를 구조화 한 것이라고 볼 수 있죠.
이러한 자료구조는 네트워크, 데이터베이스 등 데이터(자료)가 사용되는 모든 곳에 쓰이는 개념입니다.
대부분의 프로그래밍 언어는, 다양한 자료구조 모듈을 자세한 구현 명세는 감춘 채 특정 인터페이스만을 활용해서(ADT
) 프로그램 개발에 사용할 수 있게 제공 합니다.
정리하자면,
ADT
는 특정 자료구조의 개념과 기능에 대해 (논리적으로) 정의된 단계 라고 할 수 있으며,
자료구조
는 ADT
로 정의된 내용이 동작하는 데이터의 집합이자 실질적인 구현체 라고 할 수 있겠습니다!
⚫ 참고 자료
-
추상 자료형. Wikipedia. https://ko.wikipedia.org/wiki/%EC%B6%94%EC%83%81%EC%9E%90%EB%A3%8C%ED%98%95
-
Abstract Data Types. GeeksforGeeks. (2023년 9월 23일). https://www.geeksforgeeks.org/abstract-data-types/
-
자료구조. Wikipedia. https://ko.wikipedia.org/wiki/%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0
댓글남기기