알고리즘

데이터 구조 (리스트, 배열)

라임오렌지원 2022. 9. 23. 23:19

데이터 구조?

데이터를 메모리에 저장할 때 데이터의 순서나 위치 관계 등을 정하는 것

 

데이터가 온 순서대로 나열하는 방법은

데이터 추가 시 가장 뒤에 작성하면 되기에 간단하지만 검색이 필요할 때 많은 시간이 걸린다.

 

반대로, 데이터를 가나다순으로 나열하는 방법은 검색은 쉽지만 데이터 추가가 어렵다.

 

한 번 만든 후에 변경할 가능성이 없다고 하면 -> 후자 (데이터를 가나다순으로 나열하는 방법)

데이터 추가 빈도는 높지만 검색은 거의 하지 않는 경우라면 -> 전자 (데이터가 온 순서대로 나열)

를 선택하는 것이 맞다.

 

두 가지 방법을 조합한다면

새로운 데이터를 추가할 때는 대응되는 표의 끝에 추가하면 되고,

데이터를 검색할 때는 대응되는 표만 찾으면 된다.

 

데이터 구조를 고민해서 메모리 이용 효율을 높인다.

데이터 구조에 대한 접근법도 이와 같다.

데이터를 메모리에 저장할 때 목적에 맞게 구조화해서 메모리의 이용 효율을 높여야 한다.

 

 

* 리스트(List)

데이터 구조의 하나로, 데이터를 일직선으로 나열한 형태

데이터 추가나 삭제는 쉽지만, 원하는 데이터에 접근하려면 시간이 많이 걸린다.

 

 

* 배열(Array)

데이터 구조의 하나로, 데이터를 1열로 나열한 것

리스트와는 대조적으로 데이터에 접근하기는 쉽지만 추가나 삭제에 시간이 걸린다.

 

 

리스트와 배열 모두 데이터를 1열로 나열하는 데이터 구조이지만,

리스트는 접근에 시간이 걸리는 반면에 추가나 삭제가 간단한다.

반대로, 배열은 접근은 간단하지만 추가나 삭제에 많은 시간이 걸린다.

 

무엇을 사용할지는 어떤 작업을 자주하는지를 고려해서 정하면 된다.

  접근 추가 삭제
리스트 느림 빠름 빠름
배열 빠름 느림 느림

 


참고 서적

알고리즘 도감:그림으로 배우는 알고리즘26 (지음 : 이시다 모리테루, 미야자키 쇼이치)

728x90

'알고리즘' 카테고리의 다른 글

데이터 구조 (스택, 큐)  (0) 2023.01.08
알고리즘이란?  (0) 2022.09.18