인프런 커뮤니티 질문&답변

아요님의 프로필 이미지
아요

작성한 질문수

코딩테스트 [ ALL IN ONE ]

동적 배열 (Dynamic Array)

동적배열 8:23

작성

·

314

1

안녕하세요.

그림부분에서 이해가 가지않아 질문 드립니다.

a =[1,2,3] 으로 초기화를하면 array는 0,1,2 즉 배열 그림이 3칸([][][])만 있어야 하는게 아닌가요?
하지만 강의의 그림에서는 [1][2][3][][] 으로 0,1,2,3,4 까지 그려져 있습니다. (size가 3인데 말이죠)

a.append(4) 를 했을때, 동적배열은 array로 구현이 돼어있기때문에 random access 가 가능하여 마지막 index를 찾을 수 있다고 하셨는데,

  1. 선언및 초기화

a = [1,2,3] // 그림 -> [1][2][3]

  1. 접근 a[0] // O(1)

  2. 수정 a[1] = 9 // 그림 [1],[9],[3]

  3. 추가 a.append(4) // 이때 Resizing 이 일어나

    /* 그림

    [1][9][3] // 값을 옮긴 후 삭제

    [1][9][3][4][][] // 복잡도 O(n)

    */
    의 모양이 돼야하는게 아닌가요?

    즉, 궁굼한 점은 선언 및 초기화 할때 배열의 size 는 3인데그림의 배열 size는
    [][][][][] 5칸이냐는 것입니다.

 

답변 1

0

개발남노씨님의 프로필 이미지
개발남노씨
지식공유자

안녕하세요 민코님.

사실 언어에서 dynamic array를 어떻게 구현했냐에 따라 다릅니다.

 

만약 그냥 static array를 선언 및 초기화 한다고 가정하면 민코님 말씀이 맞습니다.

하지만 dynamic array를 선언 및 초기화할 때는 민코님 말씀대로 딱 그 크기만큼 배열을 배정할 수 도 있고, 넉넉히 공간을 가진 배열을 배정할 수 있습니다.(제가 그림에 그린 것 처럼).

 

저는 강의에서 O(1)로 append 하는 경우와 O(n)으로 append 해야되는 경우를 나눠서 효과적으로 보여드려야 했기 때문에 적당한 크기인 5를 처음에 배정한 것 입니다.

 

큰 의미는 없으니 두루뭉술하게 넘어가셔도 되고, 혹시 마음에 걸리신다면 파이썬은 실제로 3개의 원소를 가진 dynamic array를 선언했을 때, 어느정도의 크기를 가진 배열을 제공해주는지 알아봐도 좋을 것 같아요 (알아보게 된다면 저도 알려주세요 ㅎㅎ )

 

궁금하신점이 더 있다면 언제든 말씀해주세요 :)

아요님의 프로필 이미지
아요

작성한 질문수

질문하기