본문 바로가기

자료구조

[자료구조] 자료구조와 알고리즘이란?

자료구조

데이터가 어떤 구조로 저장되고 어떻게 사용되는지를 나타내는 것

데이터를 저장하고 관리하는 방식

 

예시)

  • 변수
  • 배열
  • 데이터: 'A'
  • 데이터: 15
  • 데이터: "hp"

알고리즘

어떤 문제를 해결하기 위한 확실한 방법

 

예시)

  • 평균을 구하는 문제

알고리즘은 자료구조에 따라서 달라지기도 하고 같은 자료구조에 대해서도 여러가지 알고리즘이 있을 수 있다.

따라서 프로그램을 작성할 때, 먼저 자료구조를 선택해 데이터를 어떻게 저장하고 사용할지 결정하고,

이에 맞는 알고리즘을 통해 데이터를 가공하고 원하는 결과를 얻는 과정을 거쳐야 한다.

 

위에서도 말했듯이 배열이라는 자료구조에도 여러개의 알고리즘이 있을 수 있다.

하지만 알고리즘을 동시에 사용할 수는 없기 때문에 둘 중에 더 좋은 알고리즘을 사용하는 것이 좋을 것이다.

 

예시)

  • 1. 배열의 모든 숫자를 더하고 원소의 개수만큼 나눠라.
  • 2. 배열의 첫 번째 원소와 두 번째 원소, 세 번째 원소를 더하고 3을 나눠라.
  • 두 번째 알고리즘 같은 경우에는 데이터가 4개면 평균을 구하지 못한다.

데이터가 더 늘어난다는 것을 생각한다면 첫 번째 알고리즘을 선택하는 것이 더 좋은 선택일 것이다.

 

 

"그렇다면 자료구조를 왜 배워야 할까?"

  • 1. 효율성 향상: 자료구조는 데이터를 처리하는 효율성을 크게 좌우한다. 올바른 자료구조를 선택하면 데이터의 삽입, 삭제, 검색 속도를 크게 향상시킬 수 있다. 예를 들어, 배열, 리스트, 트리, 해시맵 등의 자료구조는 각각 특정 상황에서 최적의 성능을 발휘한다.
  • 2. 알고리즘의 기초: 많은 알고리즘이 특정 자료구조와 밀접하게 연관되어 있다. 예를 들어, 정렬, 탐색, 그래프 탐색 등의 알고리즘은 각각 배열, 트리, 그래프 같은 자료구조 위에서 작동한다. 자료구조를 이해하지 못하면 이러한 알고리즘을 제대로 이해하거나 구현하기 어렵다.
  • 3. 문제 해결 능력 향상: 실제로 소프트웨어 개발에서 만나는 문제들은 대부분 복잡한 데이터 처리를 포함한다. 자료구조를 이해하면 복잡한 데이터를 체계적으로 처리하고 문제를 효율적으로 해결할 수 있다.
  • 4. 시스템 최적화: 대용량 데이터를 다루는 시스템에서 성능이 중요한데, 자료구조는 메모리 사용량과 처리 속도에 직접적인 영향을 미친다. 적절한 자료구조를 선택하는 것은 시스템 성능을 크게 개선할 수 있다.

 

정리

  • 데이터가 어떤 자료구조를 하고 있는지에 따라서 알고리즘이 달라지고, 이에 따라 알고리즘은 자료구조에 많은 영향을 받는다.따라서 상황에 맞는 적절한 자료구조를 택하고 이에 맞는 적절한 알고리즘을 적용할 수 있어야 한다.
  • 만약 비효율적인 자료구조를 사용하면 RAM 메모리 낭비를 초래하고 프로그램 성능 저하의 원인이 된다. 그래서 용도와 상황에 맞는 자료구조를 잘 선택해야 한다.