자료구조(1)

hyejin·2024년 7월 16일
0

study-2024

목록 보기
10/16
post-thumbnail

자료구조란?

자료구조란, 대량의 데이터를 효율적으로 관리하고, 데이터에 편리하게 접근하고 변경하기 위해 데이터를 저장하거나 조직하는 방법을 말한다. 다양한 문제 해결을 위해 여러 형태의 자료구조가 활용되며 그에 따라 다양한 알고리즘이 사용된다.

알고리즘이란, 문제를 해결하기 위해 필요한 일련의 절차나 방법을 공식화한 것으로, 프로그래밍에서는 주어진 입력값을 통해 원하는 출력값을 얻기 위한 계산 과정을 의미한다.

그렇다면 자료구조와 알고리즘은 무슨 관계가 있을까?

자료구조와 알고리즘은 컴퓨터 과학에서 매우 밀접한 관계를 가지고 있으며, 효율적인 소프트웨어 개발에 필수적이다.
알고리즘데이터를 조작하고 처리하는 방법을 정의하지만, 이 데이터를 어떻게 저장하고 관리할지 결정하는 것자료구조이다. 즉, 알고리즘은 자료구조를 사용하여 데이터를 효율적으로 처리한다.

특정 알고리즘의 성능은 선택한 자료구조에 크게 의존한다. 예를 들어, 배열을 사용한 탐색 알고리즘은 O(n) 시간이 걸리지만, 이진 탐색 트리를 사용하면 O(log n) 시간에 탐색이 가능하다.

자료구조와 알고리즘을 요리에 대입해 생각해보기까르보나라를 만들기 위한 재료를 선택하고 재료를 삶거나 볶을 수 있는 도구가 필요하다. 그리고 레시피에 따라서 순서대로 요리를 하면 까르보나라가 완성된다. 요리의 과정을 프로그래밍에 대입해 보면 재료는 데이터, 도구는 자료구조, 레시피는 알고리즘이라고 볼 수 있다.

* 따라서 자료구조와 알고리즘을 결합하여 효과적인 프로그램을 만들 수 있다.


자료구조가 중요한 이유

자료구조는 알고리즘의 성능에 직접적으로 영향을 미치며, 적절한 자료구조의 선택은 메모리 사용의 효율성을 높이고, 데이터 접근과 처리 속도를 개선할 수 있다.
예를 들어, 효율적인 검색 알고리즘을 구현하기 위해서는 해시 테이블과 같은 자료구조가 필요하고, 계층적 데이터의 관리에는 트리나 그래프와 같은 자료구조가 적합하다.
따라서, 자료구조의 이해는 프로그래머가 데이터를 효과적으로 관리하고, 알고리즘의 성능을 최적화하는 데 중요하며 이를 통해 프로그래머는 보다 효율적인 코드 작성과 더 나은 프로그램 설계를 달성할 수 있다.


자료구조 종류

자료구조는 크게 선형과 비선형으로 나뉜다.
선형 자료구조는 데이터가 일렬로 나열되어 있는 것을 의미하고, 비선형 자료구조는 특정한 형태를 띄는 것을 의미한다.

단순 데이터 구조

  • 정수(int)
  • 실수(float)
  • 문자(char)
  • 문자열(double)

비단순 데이터 구조(선형 구조)

  • 배열(Array)
    가장 일반적인 구조로, 메모리 상에 같은 타입의 자료가 연속적으로 저장된다.
  • 스택(Stack)
    LIFO(Last In, First Out) 원칙을 따르는 자료구조로, 가장 마지막에 삽입된 요소가 가장 먼저 제거된다.
  • 큐(Queue)
    FIFO(First In, First Out) 원칙을 따르는 자료구조로, 가장 먼저 삽입된 요소가 가장 먼저 제거된다.
  • 연결리스트(Linked List)
    연결 리스트는 동적 데이터 구조이다. 목록의 노드 수는 고정되어 있지 않으며 필요에 따라 늘리거나 줄일 수 있다. 노드가 다음 노드로 아무것도 가리키지 않으면 리스트의 끝이다.

비단순 데이터 구조(비선형 구조)

  • 트리(Tree)
    부모 노드 밑에 여러 자식 노드가 연결되고, 자식 노드가 다시 부모 노드가 되어 각각의 노드에게 연결되는 재귀적인 형식의 자료구조
  • 그래프(Graph)
    노드(node)와 간선(edge)로 표현되며, 이 때 노드를 정점(vertex)라고도 한다.





[참고 자료]

https://velog.io/@ghldjfldj/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0%EB%9E%80
https://velog.io/@ghldjfldj/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0%EB%9E%80
https://prgms.tistory.com/134
https://f-lab.kr/insight/importance-of-algorithms-and-data-structures

profile
노는게 제일 좋아

0개의 댓글