배열과 리스트의 기초

코딩C언어JavaPython
읽는데 13분 소요
처음 쓰여진 날: 2026-02-03
마지막 수정일: 2026-02-18
조회수: 15

요약

배열과 리스트의 기본 개념, 선언과 초기화, 인덱스를 통한 접근 방법을 알아봅니다. C언어, Java 배열과 Python 리스트를 비교하며 정보처리기사 실기에 자주 출제되는 핵심 개념을 정리합니다.

배열 핵심 정리

배열 핵심 정리

개념설명예시
배열 선언같은 자료형의 변수를 연속으로 저장int arr[5];
배열 초기화선언과 동시에 값 할당int arr[] = {1, 2, 3};
인덱스배열 요소의 위치 (0부터 시작)arr[0], arr[1]
개념설명예시
배열 선언같은 자료형의 변수를 연속으로 저장int[] arr = new int[5];
배열 초기화선언과 동시에 값 할당int[] arr = {1, 2, 3};
인덱스배열 요소의 위치 (0부터 시작)arr[0], arr[1]
length배열의 크기를 반환하는 속성arr.length

배열이란?

배열(Array) 은 같은 자료형의 데이터를 연속된 메모리 공간에 저장하는 자료구조입니다.

빈 배열
배열은 연속된 공간에 데이터를 저장합니다. 인덱스는 0부터 시작해요.
c
코드 하이라이팅 중...
초기화된 배열
scores[0]에는 85, scores[1]에는 90, scores[2]에는 78이 저장됩니다.

위 코드는 정수 3개를 저장할 수 있는 배열을 만들고, 각각 85, 90, 78로 초기화합니다.


배열의 요소

요소(Element) 는 배열에 저장된 각각의 값을 말합니다. 배열은 여러 개의 요소를 담는 상자라고 생각하면 됩니다.

c
코드 하이라이팅 중...
용어설명예시
배열요소들을 담는 전체 공간scores
요소배열에 저장된 각각의 값85, 90, 78
인덱스요소의 위치 번호 (0부터 시작)0, 1, 2

배열의 각 요소는 개별 변수처럼 사용할 수 있습니다.

c
코드 하이라이팅 중...

배열 인덱스

배열의 각 요소는 인덱스(Index) 를 통해 접근합니다. 인덱스는 0부터 시작합니다.

c
코드 하이라이팅 중...
인덱스
scores[0]85
scores[1]90
scores[2]78

배열 크기가 3이면 유효한 인덱스는 0, 1, 2입니다. scores[3]은 범위를 벗어난 접근입니다.



배열 크기 확인

배열 크기 생략

초기화할 때 배열 크기를 생략하면, 컴파일러가 초기화 값의 개수로 크기를 결정합니다.

c
코드 하이라이팅 중...

for문으로 배열 순회

배열의 모든 요소를 출력하려면 for문을 사용합니다.

c
코드 하이라이팅 중...

2차원 배열

2차원 배열과 포인터를 함께 사용하는 포인터 배열도 시험에 자주 출제됩니다. 포인터 배열은 각 요소가 포인터인 배열로, 2차원 배열의 각 행을 가리킬 수 있습니다.

c
코드 하이라이팅 중...

배열이란?

배열(Array) 은 같은 자료형의 데이터를 연속된 메모리 공간에 저장하는 자료구조입니다.

빈 배열
배열은 연속된 공간에 데이터를 저장합니다. 인덱스는 0부터 시작해요.
java
코드 하이라이팅 중...
초기화된 배열
scores[0]에는 85, scores[1]에는 90, scores[2]에는 78이 저장됩니다.

방법 1로 생성하면 모든 요소가 기본값(int는 0)으로 초기화됩니다. 방법 2는 선언과 동시에 값을 지정합니다.


배열의 요소

요소(Element) 는 배열에 저장된 각각의 값을 말합니다. 배열은 여러 개의 요소를 담는 상자라고 생각하면 됩니다.

java
코드 하이라이팅 중...
용어설명예시
배열요소들을 담는 전체 공간scores
요소배열에 저장된 각각의 값85, 90, 78
인덱스요소의 위치 번호 (0부터 시작)0, 1, 2

배열의 각 요소는 개별 변수처럼 사용할 수 있습니다.

java
코드 하이라이팅 중...

배열 인덱스

배열의 각 요소는 인덱스(Index) 를 통해 접근합니다. 인덱스는 0부터 시작합니다.

java
코드 하이라이팅 중...
인덱스
scores[0]85
scores[1]90
scores[2]78


배열 크기 확인

length 속성

Java 배열은 length 속성으로 배열의 크기(요소 개수)를 알 수 있습니다.

java
코드 하이라이팅 중...

for문으로 배열 순회

배열의 모든 요소를 출력하려면 for문을 사용합니다. 이 패턴은 정보처리기사 실기에서 매우 자주 출제됩니다.

java
코드 하이라이팅 중...

단계별 실행 과정

반복i 값조건 (i < 4)a[i]출력
1회0a[0] = 00
2회1a[1] = 11
3회2a[2] = 22
4회3a[3] = 33
5회4거짓-(종료)

System.out.print는 줄바꿈 없이 출력하므로 결과가 한 줄에 이어서 나옵니다. printprintln의 차이는 반복문 페이지에서 확인하세요.


2차원 배열

Java에서 2차원 배열은 배열의 배열입니다. 각 행의 열 수가 다를 수 있는 가변 배열(Jagged Array) 을 지원합니다.

java
코드 하이라이팅 중...
인덱스 0인덱스 1인덱스 2
arr[0]455075
arr[1]89--
java
코드 하이라이팅 중...

배열 이름은 주소다

C언어에서 배열 이름은 배열의 첫 번째 요소의 주소입니다. 이 개념은 포인터 배열을 이해하는 데 필수적인 지식입니다.

c
코드 하이라이팅 중...

즉, a&a[0]은 같습니다.

표현의미예시 결과
a배열의 시작 주소 (= &a[0])0x1000
a[0]첫 번째 요소의 값10
&a[0]첫 번째 요소의 주소0x1000
*aa가 가리키는 값 (= a[0])10
text
코드 하이라이팅 중...

*a와 a[0]이 같은 이유

배열 이름 a&a[0]과 같으므로:

c
코드 하이라이팅 중...

주소에 *를 붙이면 그 주소의 값을 가져옵니다. &a[0]a[0]의 주소이므로, *(&a[0])a[0]의 값입니다.

포인터에 배열 대입

그래서 포인터에 배열을 대입할 때 &를 붙이지 않습니다.

c
코드 하이라이팅 중...

문자 배열 (문자열)

문자(char)를 저장하는 배열은 문자열이 됩니다. 문자열 끝에는 널 문자('\0')가 자동으로 추가됩니다.

c
코드 하이라이팅 중...
인덱스012345
'H''E''L''L''O''\0'

자세한 내용은 문자열 페이지를 참고하세요.

배열 선언 방법 비교

Java에서 배열을 선언하는 다양한 방법이 있습니다.

java
코드 하이라이팅 중...
방법크기 지정값 초기화비고
new int[4]직접기본값(0)나중에 값 대입
{0, 1, 2, 3}자동직접선언과 동시에만 가능
new int[]{0, 1, 2, 3}자동직접어디서든 사용 가능

리스트 핵심 정리

개념설명예시
리스트 선언대괄호로 값을 나열하여 생성x = [1, 2, 3]
인덱스0부터 시작, 음수 인덱스 지원x[0], x[-1]
append리스트 끝에 요소 하나 추가x.append(4)
extend다른 리스트의 요소를 모두 추가x.extend([5, 6])
pop특정 인덱스의 요소를 꺼내고 제거x.pop(0)
reverse리스트를 제자리에서 뒤집기x.reverse()
enumerate인덱스와 값을 함께 반환for i, v in enumerate(x):
슬라이싱범위 지정으로 부분 리스트 추출x[::2], x[::-1]

리스트 기초

리스트(List) 는 Python에서 가장 많이 쓰이는 자료구조로, 여러 값을 순서대로 저장합니다. 대괄호 []를 사용하며, 서로 다른 자료형을 함께 담을 수 있습니다.

python
코드 하이라이팅 중...

인덱스로 접근하기

리스트의 각 요소는 인덱스로 접근합니다. 인덱스는 0부터 시작하고, 음수 인덱스를 사용하면 뒤에서부터 접근합니다.

python
코드 하이라이팅 중...
인덱스01234
양수1020304050
음수x[-5]x[-4]x[-3]x[-2]x[-1]

리스트 주요 메서드

메서드설명예시
append(값)리스트 끝에 요소 하나 추가x.append(4)
extend(리스트)다른 리스트의 요소를 모두 추가x.extend([5, 6])
insert(i, 값)인덱스 i 위치에 값 삽입x.insert(1, 99)
pop(i)인덱스 i의 요소를 꺼내고 제거 (기본: 마지막)x.pop(0)
remove(값)처음 나오는 해당 값을 삭제x.remove(3)
reverse()리스트를 제자리에서 뒤집기x.reverse()
python
코드 하이라이팅 중...


2차원 리스트

2차원 리스트는 리스트 안에 리스트가 있는 구조로, 행과 열로 이루어진 표처럼 동작합니다.

python
코드 하이라이팅 중...

lol[행][열] 형태로 접근합니다.

python
코드 하이라이팅 중...

enumerate 함수

enumerate()는 리스트를 for문으로 순회할 때 인덱스와 값을 동시에 반환합니다.

python
코드 하이라이팅 중...

리스트 슬라이싱

슬라이싱(Slicing) 은 리스트의 일부를 잘라내는 기능입니다. x[시작:끝:간격] 형식을 사용합니다.

python
코드 하이라이팅 중...
슬라이싱의미결과
x[::2]처음부터 끝까지 2칸씩[0, 2, 4, 6, 8]
x[1::2]인덱스 1부터 2칸씩[1, 3, 5, 7, 9]
x[::-1]역순으로 전체[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

정보처리기사 실기 기출 문제