less than 1 minute read

자료구조에 대한 기본적인 이해

자료구조란?

자료구조는 데이터를 효율적으로 저장하고 관리하며, 데이터를 처리하기 위한 방법과 알고리즘을 제공하는 체계를 의미한다. 즉 ‘데이터의 표현 및 저장방법’을 의미한다.

‘정수를 저장하기 위해 int형 변수를 선언’, ‘개인 정보를 저장하기 위해 구조체를 정의’ 등의 사례와 같이 넓은 의미에서 보면 int형 변수도, 구조체의 정의도 데이터를 표현 및 저장하는 하나의 방법이기 때문에 자료구조에 속한다.

Alt text

위 그림에서 보이듯이 파일도 데이터를 저장하는 도구이기 때문에 파일의 구조도(파일이 데이터를 저장하는 방식도) 자료구조에 포함된다. 선형이라는 단어의 경우는 ‘선의 형태’로 이해하면 된다. 즉, 선형 자료구조는 데이터를 선의 형태로 나란히 혹은 일렬로 저장하는 방식이다. 반면 비선형 자료구조는 그 이름이 의미하듯이, 데이터를 나란히 저장하지 않는 구조이다.

자료구조와 알고리즘

앞서 말했듯이 자료구조가 ‘데이터의 표현 및 저장방법’을 의미한다면, 알고리즘은 표현 및 저장된 데이터를 대상으로 하는 ‘문제의 해결 방법’을 의미한다. 예를 들어서 다음의 배열 선언은 자료구조적 측면의 코드이다.

   int arr[10]={1,2,3,4,5,6,7,8,9,10};

반면 배열에 저장된 모든 값의 합을 더하는 다음 반복문의 구성은 알고리즘적 측면의 코드이다.

   for(idx=0; idx<10; idx++)
        sum+=arr[idx];

위 반복문은 ‘배열에 저장된 모든 값의 합을 구하는 알고리즘’이라 할 수 있다. 이렇듯 자료구조와 알고리즘은 밀접한 관계를 갖는다. 자료구조가 결정되어야 그에 따른 효율적인 알고리즘을 결정할 수 있기 때문이다. 즉, ‘자료구조에 따라 알고리즘은 달라진다.’, ‘알고리즘은 자료구조에 의존적이다.’ 라는 의미이다.