1차원 · 2차원 배열
배열
같은 타입의 값 여러 개를 하나의 이름으로 묶어 다루는 배열을 배웁니다. 이 레슨을 끝내면 배열이 힙에 어떻게 놓이는지, 왜 복사했는데 원본이 바뀌는지, 2차원 배열이 실제로는 "배열의 배열"인 이유를 설명할 수 있습니다.
1. 왜 배우는가
학생 30명의 점수를 저장해야 한다고 합시다. 변수 30개(score1, score2, ...)를 만들면 평균을 구하는 코드만 30줄이고, 학생이 31명이 되면 코드를 고쳐야 합니다. 배열(array)은 같은 타입의 값을 연속된 공간에 저장하고 번호(인덱스)로 접근하게 해 줍니다. 30명이든 3만 명이든 반복문 한 개로 처리됩니다.
실무에서 배열은 두 얼굴을 가집니다. 직접 쓰는 경우는 생각보다 적습니다. 대부분 ArrayList, HashMap 같은 컬렉션(중급 레슨)을 씁니다. 하지만 그 컬렉션들이 내부적으로 배열로 구현되어 있습니다. ArrayList는 배열을 감싼 것이고, HashMap은 배열의 각 칸에 연결 리스트를 매단 것입니다.
배열의 메모리 구조와 인덱스 원리를 모르면 "왜 ArrayList 중간 삽입이 느린가", "왜 HashMap 조회가 빠른가"를 이해할 수 없습니다.
또한 배열은 성능이 중요한 곳(이미지 픽셀, 네트워크 버퍼, 행렬 연산, 게임 보드)에서 여전히 직접 쓰입니다. 코딩 테스트에서도 배열은 기본입니다.