[Do It!]알고리즘 코딩테스트 with JAVA - 배열

ideal dev·2023년 3월 5일
0

DoIt

목록 보기
2/2

배열과 리스트

  • 두 자료구조의 특징을 정확하게 이해하고 문제가 요구하는 조건에 따라 적절하게 선택해 사용하는 것이 중요

Array

int[] arr = new int[3];
  • 연속 공간에 값이 채워져 있는 형태의 자료구조
  • 고정길이로, 정해진 길이의 배열 변경 불가능
    • 배열의 크기는 선언할 때 지정하고, 한 번 선언하면 수정 불가
  • 인덱스를 통한 값 접근 가능
  • 새로운 값을 삽입하거나 특정 인덱스에 있는 값을 삭제하기 어려움

ArrayList

ArrayList<Integer> arrList = new ArrayList<>();
  • 값과 포인터를 묶은 노드라는 것을 포인터로 연결한 자료구조
  • 가변길이로, 객체 생성 이후에도 동적으로 배열 길이 조정이 가능
    • Head포인터부터 순서대로 접근해야 함 → 접근 속도 느림
    • 크기 변하기 쉬운 데이터 다룰 때 적절
  • 포인터로 연결되어 있어 데이터의 삽입/삭제가 빠름
  • 포인터를 저장할 공간이 필요하므로 배열보다 구조가 복잡함

차이점 정리

  1. 크기

Array 크기 : 선언 시 할당하여 고정적
ArrayList 크기 : 크기를 동적으로 수정 가능

  1. 접근방식

Array : 인덱스를 통해 O(1)의 시간으로 접근 가능
ArrayList : 인덱스를 통해 O(1)의 시간으로 접근 가능
번외... LinkedList : 연결된 노드를 통해 순차적으로 접근하기 때문에 O(N)의 시간으로 접근

0개의 댓글