작성
·
278
1
안녕하세요!
동적배열 강의관련 질문드립니다.
정적배열과 동적배열의 시간복잡도를 비교하는 표에서,
정적배열의 데이터 추가/삽입(insert_back/insert_at)이 이해가 안 되어 질문드립니다.
정적배열은 선언과 동시에 크기가 정해지는데, 이미 초기화가 된 상태에서 추가나 삽입은 안 되지 않나요?
혹시 크기만 선언된 비어있는 정적배열을 말하는건가 생각해보니, 비어있는거면 insert_at이나 delete_at을 할 때도 기존 데이터를 옮길 필요가 없으니 O(n)이 아니라 O(1)이지 않나싶어서 그건 아닌 것 같고,
아니면 크기보다 데이터가 덜 들어간 케이스에서 저런 시간복잡도가 나오는건가요? ㅠㅠ 그렇다면 저게 다 이해가 됩니다.
그런데 아무리 그래도 정적배열에서는 추가/삽입의 한계가 있지 않나요? 어떤 조건에서 저게 되는건지 알려주세요ㅠㅠ
답변 1
1
안녕하세요 성실한 멸치님!
이게 조금 혼란이있을법 하네요. 사실 정적 배열은 클래스로 구현된 자료구조가 아니라서 보통 메서드가 없죠. 그래서 선언 및 초기화나, 수정, 정도만 가능하죠. 그래서 성실한 멸치님 말씀대로 insert_at, delete_at은 없는게 맞습니다.
저는 여러 상황을 설명해드리기 위해 일반적으로 볼 수 없는 정적배열을 이용하여 만든 list 클래스를 가정하고 설명했던 겁니다.
결국 Array List와 Linked List 두 가지를 설명드려야되는데, 모든 언어에서 구현된 Array List는 모두 Dynamic Array로 구현된 Array List 이거든요. 저는 요기에 Dynamic Array대신 Static Array를 살짝 껴놓고 비교를 해놓은 겁니다. 그래서 성실한멸치님말대로 저런 상황은 볼 수 없는게 맞아요.
결론: Static Array로 구현된 Array List 클래스를 가정하고 설명을 드린것입니다.
혹시 질문에 대한 답이 됐을까요??
더 궁금한 점 있으시면 언제든지 질문 남겨주세요~
답변이 도움이 되었습니다. 감사합니다^_^