[코딩 테스트 합격자 되기] 배열– 1. 배열 개념

배열 개념에 대해 이해하고 활용하는 방법을 알 수 있습니다. 코딩 테스트 난이도별로 배열 관련 문제를 풀며 여러 함정을 확인하고 이를 해결하는 방법에 익숙해집니다.

배열은 인덱스와 값을 일대일 대응해 관리하는 자료구조입니다. 데이터를 저장할 수 있는 모든 공간은 인덱스와 일대일 대응하므로 어떤 위치에 있는 데이터든 한 번에 접근할 수 있습니다.

총 3편으로 정리했습니다. 1편은 배열 개념입니다.

 

1. 배열의 개념

2. 배열의 효율성과 자주 활용하는 리스트 기법

3. 배열 몸풀기 문제

 

배열 개념에 대해 이해하고 활용하는 방법을 알 수 있습니다. 코딩 테스트 난이도별로 배열 관련 문제를 풀며 여러 함정을 확인하고 이를 해결하는 방법에 익숙해집니다.

배열은 인덱스와 값을 일대일 대응해 관리하는 자료구조입니다. 데이터를 저장할 수 있는 모든 공간은 인덱스와 일대일 대응하므로 어떤 위치에 있는 데이터든 한 번에 접근할 수 있습니다. 총 3편으로 정리했습니다. 1편은 배열 개념입니다.

 

 

배열 선언

배열을 선언하는 방법은 다음과 같습니다. 이름이 arr이고 길이가 6인 정수형 배열을 리스트를 활용해서 선언하는 3가지 방법을 예제로 알아보겠습니다.

 

일반적인 방법

arr = [0, 0, 0, 0, 0, 0]
arr = [0] * 6

 

리스트 생성자를 사용하는 방법

arr = list(range(6)) # [0, 1, 2, 3, 4, 5]

 

리스트 컴프리헨션을 활용하는 방법

arr = [0 for _ in range(6)] # [0, 0, 0, 0, 0, 0]

 

이렇게 선언한 배열은 컴퓨터에 이런 모습으로 저장됩니다.

 

 

배열은 인덱스가 0부터 시작합니다. 즉, 3번째 데이터에 접근하려면 arr[2]와 같이 접근하면 됩니다. 다만 파이썬의 경우 배열을 지원하는 문법은 없고 그 대신 리스트라는 문법을 지원합니다. 엄밀히 말해 배열과 리스트는 다른 개념이지만 이 책은 파이썬 중심으로 내용을 풀어가므로 여기서는 코드와 함께 배열을 설명해야 할 때는 파이썬의 리스트를 사용하겠습니다.

 

※ 파이썬의 리스트는 동적으로 크기를 조절할 수 있도록 구현되어 있습니다. 그래서 파이썬의 리스트는 다른 언어의 배열 기능을 그대로 사용할 수 있으면서 배열 크기도 가변적이므로 코딩 테스트에서 고려할 사항을 조금 더 줄여줍니다. 또 슬라이싱, 삽입, 삭제, 연결 등의 연산을 제공하므로 더 편리합니다.

 

배열과 차원

배열은 2차원 배열, 3차원 배열과 같이 다차원 배열을 사용할 때도 많습니다. 하지만 컴퓨터 메모리의 구조는 1차원이므로 2차원, 3차원 배열도 실제로는 1차원 공간에 저장합니다. 다시 말해 배열은 차원과는 무관하게 메모리에 연속 할당됩니다.

 

1차원 배열

1차원 배열은 가장 간단한 배열 형태를 가집니다. “간단하다.”라고 말한 이유는 1차원 배열의 모습이 메모리에 할당된 실제 배열의 모습과 같다는 겁니다. 다음 그림을 보면 쉽게 이해할 수 있습니다.

 

 

왼쪽 그림이 1차원 배열의 모습이고, 오른쪽 모습이 실제 메모리에 배열이 할당된 모습입니다. 배열의 각 데이터는 메모리의 낮은 주소에서 높은 주소 방향으로 연이어 할당됩니다.

 

2차원 배열

2차원 배열은 1차원 배열을 확장한 겁니다. 2차원 배열은 파이썬에서 리스트를 사용해 다음과 같이 선언할 수 있습니다.

# 2차원 배열을 리스트로 표현
arr = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
# arr[2][3]에 저장된 값을 출력
print(arr[2][3]) # 12
# arr[2][3]에 저장된 값을 15로 변경
arr[2][3] = 15
# 변경된 값을 출력
print(arr[2][3]) # 15

 

리스트 컴프리헨션을 활용하면 다음과 같이 선언할 수도 있습니다.

 

# 크기가 3 * 4인 리스트를 선언하는 예
arr = [[i]*4 for i in range(3)] # [[0, 0, 0, 0], [1, 1, 1, 1], [2, 2, 2, 2]]

 

arr = [[1, 2, 3], [4, 5, 6]] # ➊ 2행 3열 2차원 배열을 표현하는 리스트 선언

 

 

왼쪽은 2차원 배열을 사람이 이해하기 쉽도록 2차원으로 표현한 것이고, 오른쪽은 실제 메모리에 2차원 배열이 저장된 상태를 표현한 겁니다. 사람이 이해하기에는 왼쪽의 형태로 이해하는 것이 편리하므로 2차원 배열을 왼쪽의 행과 열 공간처럼 표현하는 경우가 많지만 실제로는 오른쪽처럼 0행, 1행 순서로 데이터를 할당해 1차원 공간에 저장합니다. 이런 배열의 특성을 잘 기억해두기 바랍니다.

 

2편은 배열의 효율성과 자주 활용하는 리스트 기법입니다.

자료구조, 알고리즘, 빈출 100 문제로 대비하는 코테 풀 패키지

[되기] 코딩 테스트 합격자 되기(파이썬 편)

저자 박경록

매일 퇴근과 점심 메뉴를 고민하는 9년차 시스템 S/W 개발자입니다. 수학, 알고리즘 같은 실생활과 가깝고도 먼 학문을 좋아하고, 명확하지만 개선 여지가 있는 문제들에 대해 논의하고 사고를 개선해 나가는 과정을 좋아합니다.

Leave a Reply

©2020 GoldenRabbit. All rights reserved.
상호명 : 골든래빗 주식회사
(04051) 서울특별시 마포구 양화로 186, 5층 512호, 514호 (동교동, LC타워)
TEL : 0505-398-0505 / FAX : 0505-537-0505
대표이사 : 최현우
사업자등록번호 : 475-87-01581
통신판매업신고 : 2023-서울마포-2391호
master@goldenrabbit.co.kr
개인정보처리방침
배송/반품/환불/교환 안내