동적 배열 Dynamic Array

2023. 4. 9. 11:00·코딩테스트 준비/자료구조
반응형

동적 배열도 결국 Array다

리사이징

넣어야 되는 데이터가 Array가 처음 할당 받은 메모리 크기보다 클 때, 리사이징이 동작한다.

새로운 메모리 주소를 할당받게 되는데, 그 크기는 기존 배열의 두 배가 기준이 된다. 왜냐하면, 리사이징은 기존에 있던 데이터를 새로운 메모리 주소에 옮기고 이전 데이터를 지워야 하는데, 이때만 O(n)의 시간복잡도를 가지게 된다. 이 리사이징 작업이 데이터를 추가할 때마다 동작하게 되면, 추가할 때마다 O(n)의 작업을 다시 해야 한다. 그래서 한 번 늘릴때 통크게 늘리는 것이다.

파이썬이 사용하게 되는 것이 dynamic array다

문제에서 list를 사용하게 될 때를 잘 구분해야함

선언 및 초기화

  • 선언시에는 n개의 데이터를 넣어야하기 때문에 O(n)

접근

  • O(1)

추가

  • 데이터 사이즈가 남아있을 때는 O(1)
  • 데이터가 꽉 차있을 때는 O(n)
  • 분할상황기법으로 O(1)이 된다.

맨 뒤 데이터 삭제

  • O(1) 데이터의 크기를 알고 있으므로 바로 삭제가능

중간 데이터 추가

  • O(n) 데이터를 뒤로 밀어내고 데이터를 넣어야 하기 때문에 O(n)

중간 데이터 삭제

  • O(n) 데이터를 앞으로 땡겨야 하기 때문에 O(n)


Uploaded by N2T

반응형

'코딩테스트 준비 > 자료구조' 카테고리의 다른 글

배열 Array  (0) 2023.04.09
배열의 코테 적용방법  (1) 2023.04.09
'코딩테스트 준비/자료구조' 카테고리의 다른 글
  • 배열 Array
  • 배열의 코테 적용방법
cvcvcx9
cvcvcx9
프로그래머
  • cvcvcx9
    참치와 연어가 좋아
    cvcvcx9
  • 전체
    오늘
    어제
    • 전체보기 (90)
      • JAVA (22)
        • 웹 프로그래밍 딥하게 파보기 (7)
        • String (2)
        • 자바의 다양한 객체 (3)
        • 클래스와 인터페이스, 추상클래스 (2)
        • 컬렉션과 자료구조 (6)
        • 제네릭 (0)
      • SPRING (3)
      • JPA 게시판 (19)
        • JPA게시판 만들기 (7)
        • JPA (10)
        • Spring Security (2)
        • 오류정리 (0)
      • 코딩테스트 준비 (4)
        • 자료구조 (3)
      • Python (21)
        • Django (21)
      • 컴퓨터 기초 (8)
        • 컴퓨팅사고 (7)
      • Web (7)
        • 유용한 설정 (6)
        • Git 관련 (1)
      • 데이터베이스 (1)
        • 친절한 SQL튜닝 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 인기 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.3
cvcvcx9
동적 배열 Dynamic Array
상단으로

티스토리툴바