본문 바로가기
알아두면 좋은것들

02.06 (TIL)

by 오랑이귀엽다 2024. 2. 6.

자료구조의 종류 및 차이점

 

자료구조는 데이터를 효율적으로 저장하고 관리하기 위한 구조입니다. 주요 자료구조에는 배열(Array), 연결 리스트(Linked List), 스택(Stack), 큐(Queue), 해시 테이블(Hash Table), 힙(Heap), 그래프(Graph), 트리(Tree) 등이 있습니다.

 

  • 열(Array): 고정된 크기를 가지며, 인덱스를 통해 빠른 데이터 접근이 가능합니다. 동일한 타입의 데이터를 순차적으로 저장합니다.
  • 연결 리스트(Linked List): 각 노드가 데이터와 다음 노드를 가리키는 포인터를 포함하여 연결되어 있습니다. 동적 크기 조정이 가능하며, 삽입과 삭제가 배열에 비해 용이합니다.
  • 스택(Stack): LIFO(Last In First Out) 원칙에 따라 작동하는 선형 자료구조입니다. 데이터의 추가와 삭제가 한 쪽 끝에서만 이루어집니다.
  • 큐(Queue): FIFO(First In First Out) 원칙에 따라 작동하는 선형 자료구조입니다. 한 쪽 끝에서는 삽입, 반대편에서는 삭제가 이루어집니다.
  • 해시 테이블(Hash Table): 키-값 쌍으로 데이터를 저장하며, 해시 함수를 사용해 데이터의 저장 위치를 결정합니다. 빠른 데이터 검색과 접근이 가능합니다.
  • 힙(Heap): 우선순위 큐를 구현하기 위한 트리 기반의 자료구조입니다. 최대값 또는 최소값을 빠르게 찾을 수 있습니다.
  • 그래프(Graph): 노드(정점)들과 이를 연결하는 간선으로 구성됩니다. 네트워크 구조를 모델링하는 데 사용됩니다.
  • 트리(Tree): 계층적 관계를 표현하는 비선형 자료구조입니다. 이진 트리, 이진 탐색 트리, AVL 트리 등이 있습니다.

a. 자료구조의 절대적 우월성

  • 자료구조는 상황에 따라 그 성능이 달라집니다. 특정 상황에서 최적인 자료구조가 다른 상황에서는 비효율적일 수 있으므로, 사용되는 상황과 요구 사항에 따라 적절한 자료구조를 선택하는 것이 중요합니다.

 

객체지향이란?

  • 객체지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그램을 객체들의 집합으로 모델링하여, 각 객체가 서로 상호작용하는 방식으로 프로그램을 구성하는 패러다임입니다. 데이터와 이를 처리하는 메소드를 하나의 단위(객체)로 캡슐화하여, 소프트웨어의 재사용성, 유지보수성, 확장성을 향상시킵니다.

객체지향의 특징

  1. 캡슐화: 데이터와 함수를 하나의 단위로 묶어서 관리하는 기법입니다.
  2. 상속: 하나의 클래스가 다른 클래스의 특성을 물려받는 기능입니다.
  3. 다형성: 같은 이름의 메소드가 다른 기능을 수행할 수 있도록 하는 기능입니다.
  4. 추상화: 복잡한 실제 사물을 필수적인 부분만 간추려 모델링하는 것입니다.

OOP란?

  • OOP는 위에서 설명한 객체지향 프로그래밍을 말하며, 이는 프로그램을 객체들의 상호작용으로 표현하는 프로그래밍 패러다임입니다.

SOLID 원칙

  • SOLID는 객체지향 설계의 다섯 가지 기본 원칙을 나타내는 약어로, 좋은 소프트웨어 설계를 위한 지침을 제공합니다.
    1. S: 단일 책임 원칙(Single Responsibility Principle): 한 클래스는 하나의 책임만 가져야 합니다.
    2. O: 개방-폐쇄 원칙(Open/Closed Principle): 소프트웨어 엔티티(클래스, 모듈, 함수 등)는 확장에는 열려 있어야 하지만, 수정에는 닫혀 있어야 합니다.
    3. L: 리스코프 치환 원칙(Liskov Substitution Principle): 서브타입은 언제나 그것의 베이스 타입으로 교체할 수 있어야 합니다.
    4. I: 인터페이스 분리 원칙(Interface Segregation Principle): 클라이언트는 자신이 이용하지 않는 인터페이스에 의존하면 안 됩니다.
    5. D: 의존성 역전 원칙(Dependency Inversion Principle): 고수준 모듈은 저수준 모듈에 의존해서는 안 되며, 둘 다 추상화에 의존해야 합니다.

'알아두면 좋은것들' 카테고리의 다른 글

02.15 (TIL)  (0) 2024.02.15
02.13 (TIL)  (0) 2024.02.13
02.05 (TIL)  (0) 2024.02.05
02.02 (TIL)  (0) 2024.02.02
02.01 (TIL)  (0) 2024.02.01