배열과 리스트의 기초

코딩C언어JavaPython
읽는데 20분 소요
처음 쓰여진 날: 2026-02-03
마지막 수정일: 2026-04-07
조회수: 1,412

요약

배열과 리스트의 기본 개념, 선언과 초기화, 인덱스를 통한 접근 방법을 알아봅니다. 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) 은 같은 종류의 데이터를 메모리에 나란히 저장하는 구조입니다.

변수가 값을 하나만 담는 빈 상자라면, 배열은 같은 종류의 빈 상자가 나란히 이어져 있는 것입니다. 각 상자에 번호(인덱스)가 붙어 있어서, 번호로 원하는 상자를 찾아 값을 넣거나 꺼낼 수 있습니다.

빈 배열 — 빈 상자 3개가 나란히 이어져 있고, 각각 0, 1, 2 번호가 붙어 있는 모습
변수가 상자 하나라면, 배열은 상자가 나란히 이어져 있는 것입니다. 앞으로 배열은 대괄호 안에 넣겠습니다.
c
코드 하이라이팅 중...
  • int: 정수를 저장하겠다는 뜻 (자료형1)
  • scores: 배열의 이름
  • [3]: 칸을 3개 만들겠다는 뜻
  • {85, 90, 78}: 각 칸에 넣을 값
초기화된 배열
scores[0]에는 85, scores[1]에는 90, scores[2]에는 78이 저장됩니다.

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

배열 크기 생략

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

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

배열의 요소 쌩기초

요소(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에서는 에러 메시지 없이 쓰레기 값이 출력되거나 프로그램이 비정상 종료될 수 있어서 특히 주의해야 합니다.

printf는 화면에 값을 출력하는 함수이고, %d는 정수를 출력하라는 의미입니다. 자세한 내용은 출력 함수 페이지를 참고하세요.



2차원 배열 심화

2차원 배열은 행과 열로 이루어진 표 형태의 배열입니다. 2차원 배열과 포인터를 함께 사용하는 포인터 배열도 시험에 자주 출제됩니다.

2차원 배열의 선언, 초기화, 접근 방법 등 자세한 내용은 2차원 배열 페이지에서 확인하세요.


배열이란? 쌩기초

배열(Array) 은 같은 종류의 데이터를 메모리에 나란히 저장하는 구조입니다.

변수가 값을 하나만 담는 빈 상자라면, 배열은 같은 종류의 빈 상자가 나란히 이어져 있는 것입니다. 각 상자에 번호(인덱스)가 붙어 있어서, 번호로 원하는 상자를 찾아 값을 넣거나 꺼낼 수 있습니다.

빈 배열 — 빈 상자 3개가 나란히 이어져 있고, 각각 0, 1, 2 번호가 붙어 있는 모습
변수가 상자 하나라면, 배열은 상자가 나란히 이어져 있는 것입니다. 앞으로 배열은 대괄호 안에 넣겠습니다.
java
코드 하이라이팅 중...
초기화된 배열
scores[0]에는 85, scores[1]에는 90, scores[2]에는 78이 저장됩니다.

방법 1(new int[3])로 생성하면 값을 지정하지 않았으므로 모든 칸이 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 속성4으로 배열의 크기(요소 개수)를 알 수 있습니다.

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의 시작 주소를 포인터 ptr이 가리키는 모습
배열 이름 a는 첫 번째 요소의 주소(100)입니다. 포인터 ptr에 a를 대입하면 같은 주소를 가리킵니다.
표현의미예시 결과
a배열의 시작 주소 (= &a[0])100
a[0]첫 번째 요소의 값10
&a[0]첫 번째 요소의 주소100
*aa가 가리키는 값 (= a[0])10

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

여기서 두 가지 기호를 알아야 합니다.

  • & (주소 연산자): 변수 앞에 붙이면 그 변수의 주소를 가져옵니다. &a[0]a[0]이 저장된 주소입니다.
  • * (역참조 연산자): 주소 앞에 붙이면 그 주소에 저장된 을 가져옵니다. *ptr은 ptr이 가리키는 곳의 값입니다.

int *ptr에서의 *는 "이 변수는 포인터입니다"라는 선언 표시이고, *a에서의 *는 "이 주소의 값을 가져와라"라는 역참조 동작입니다. 같은 기호지만 의미가 다릅니다.

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

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

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

포인터에 배열 대입

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

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

문자 배열 (문자열) 기초

문자(char)를 저장하는 배열은 문자열이 됩니다. 문자열 끝에는 **널 문자('\0')**가 자동으로 추가됩니다. 널 문자는 문자열의 끝을 표시하는 보이지 않는 특수 문자입니다.

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

"HELLO"는 5글자이지만, C에서는 문자열 끝에 자동으로 '\0'이 붙으므로 실제 배열 크기는 6이 됩니다.

인덱스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]
리스트 컴프리헨션한 줄로 리스트 생성[x*2 for x in lst]
len()리스트의 요소 개수 반환len(x)
sum()리스트 요소의 합 반환sum(x)

리스트 기초

리스트(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
코드 하이라이팅 중...
열 0열 1열 2
lol[0]123
lol[1]456
lol[2]789

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]

리스트 컴프리헨션

리스트 컴프리헨션(List Comprehension) 은 반복문과 조건식을 한 줄로 압축하여 새 리스트를 만드는 문법입니다.

기본 형식

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

for 문이 한 번 돌 때마다 표현식의 결과가 새 리스트의 요소로 들어갑니다.

예시 1: 모든 요소를 2배로

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

이는 다음 for문과 동일합니다.

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

예시 2: 조건 필터링

if 절을 붙이면 조건을 만족하는 요소만 포함합니다.

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

예시 3: 표현식에 연산 적용

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

len()과 sum() 함수

len()sum()은 리스트와 함께 자주 쓰이는 내장 함수입니다. 메서드처럼 점(.)을 찍지 않고, 함수 이름 뒤 괄호 안에 리스트를 넣어 호출합니다.

len() — 요소 개수

len(리스트) 는 리스트에 들어 있는 요소의 개수를 반환합니다.

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

문자열의 길이를 구할 때도 같은 함수를 사용합니다.

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

sum() — 요소의 합

sum(리스트) 는 리스트에 들어 있는 숫자 요소의 을 반환합니다.

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

평균 계산 패턴

sum()len()을 함께 사용하면 평균을 한 줄로 구할 수 있습니다.

python
코드 하이라이팅 중...
함수설명예시결과
len(x)요소 개수len([1, 2, 3])3
sum(x)요소의 합sum([1, 2, 3])6
sum(x) / len(x)평균sum([1, 2, 3]) / len([1, 2, 3])2.0

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


Footnotes

  1. 자료형은 저장할 데이터의 종류를 컴퓨터에게 알려주는 표시입니다. int는 정수, char는 문자, float는 소수점이 있는 숫자를 의미합니다.

  2. 초기화란 변수나 배열에 처음으로 값을 넣어주는 것을 말합니다.

  3. 컴파일러는 코드를 실행 가능한 프로그램으로 변환해주는 도구입니다.

  4. 속성이란 배열에 딸려 있는 정보로, 괄호 없이 접근합니다. 마치 사람이 '이름'이라는 정보를 갖고 있듯, 배열은 'length'라는 크기 정보를 갖고 있습니다.