inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

코딩테스트 [ ALL IN ONE ]

동적 배열 (Dynamic Array)

동적배열 7:35

343

데브츄

작성한 질문수 2

1

안녕하세요!

동적배열 강의관련 질문드립니다.

정적배열과 동적배열의 시간복잡도를 비교하는 표에서,

정적배열의 데이터 추가/삽입(insert_back/insert_at)이 이해가 안 되어 질문드립니다.

정적배열은 선언과 동시에 크기가 정해지는데, 이미 초기화가 된 상태에서 추가나 삽입은 안 되지 않나요?

혹시 크기만 선언된 비어있는 정적배열을 말하는건가 생각해보니, 비어있는거면 insert_at이나 delete_at을 할 때도 기존 데이터를 옮길 필요가 없으니 O(n)이 아니라 O(1)이지 않나싶어서 그건 아닌 것 같고,

아니면 크기보다 데이터가 덜 들어간 케이스에서 저런 시간복잡도가 나오는건가요? ㅠㅠ 그렇다면 저게 다 이해가 됩니다.

그런데 아무리 그래도 정적배열에서는 추가/삽입의 한계가 있지 않나요? 어떤 조건에서 저게 되는건지 알려주세요ㅠㅠ

algorithm 코딩-테스트 코테 준비 같이 해요! 알고리즘 python

답변 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 클래스를 가정하고 설명을 드린것입니다.

 

혹시 질문에 대한 답이 됐을까요??

더 궁금한 점 있으시면 언제든지 질문 남겨주세요~

 

0

데브츄

답변이 도움이 되었습니다. 감사합니다^_^

노션 공유 링크

0

90

2

수업 중간에 내주신 문제는 해답을 알 수 없는걸까요?

0

79

2

최신 강의와 비교

0

86

2

Min Cost Climbing stairs 질문

0

77

2

노션 공유 부탁드립니다!

1

88

2

for 문에 sort 함수 를 사용하면

1

90

2

노션 공유 부탁드립니다.

0

105

2

디스코드가 올바르지 않다고 뜹니다..!

0

107

1

그래프

0

98

2

노션 공유

1

123

2

시간복잡도 질문

2

125

3

11강 질문

1

78

2

노션 공유 부탁드립니다

0

84

2

linkedList - BrowserHistory 코드 질문

0

76

1

list1.append(list2)와 list1.append(list2[:])의 차이가 무엇인가요?

1

168

1

라이브러리 사용

1

137

2

문제 교재는 따로 없는 거 맞나요?

1

202

2

LCA 관련해서 질문이 있습니다.

1

118

2

[Unique Paths] 완전탐색 / DP (후반부)

0

108

1

dp 계단오르기최소비용질문입니다.

0

109

1

Dynamic Array 의 size 정보가 저장되는 곳

2

161

2

노션공유가 안된듯 합니다

1

165

2

[코테 적용] 👉 [3번 문제] 완전탐색 (DFS, BFS) (전반부)

1

122

1

강의자료 만들 때 사용하신 프로그램이 뭘까요?

1

204

1