June

리스트

리스트

리스트는 주로 연속된 일관적인 자료들을 순서대로 저장할 때 용이하다. 리스트는 주로 배열과 벡터를 사용하여 구현할 수 있다.

1. 배열

배열은 프로그래밍을 시작한 뒤 얼마 지나지 않아 접하게 된다.

배열은 아래와 같은 그림으로 생각하면 된다.

0123456

배열은 처음 인덱스가 0으로 시작한다. C/C++에서 배열은 다음과 같이 사용할 수 있다.

c++
자료형 배열이름[인덱스 개수];
int arr[10]; // 선언

배열이름[인덱스];
arr[6];  // 접근

이를 활용하여 1부터 5까지 배열에 저장하고, 순서대로 출력하는 코드를 쓸 수 있다.

c++
int main() {
	int arr[5];
	for(int i = 0 ; i < 5 ; i++) {
		cin>>arr[i];
	}
	
	for(int i = 0 ; i < n ; i++) {
		cout>>arr[i]>>" ";
	}
}

배열은 단점도 존재한다. 배열의 크기를 너무 크게 설정하면 백준 문제를 풀다가 메모리 초과가 날 수도 있다. 그렇기에 이 때는 동적 할당을 해주는 벡터가 필요하다.

2. 벡터

C++에서는 벡터라는 특수한 자료형을 사용할 수 있다. 벡터는 우리가 값을 넣을 때 크기를 키우고, 자료를 없애면 크기가 줄어드는 동적 할당 리스트이다. 그렇기에 위에서 서술한 배열의 단점을 없앨 수 있다. 아래는 C++에서 벡터를 사용하는 방법이다.

c++
#include <vector>  //vector 헤더파일 필요

vector<자료형> 벡터이름;
vector<int> v;  // 선언

벡터이름[인덱스];
v[10];  //접근

// 벡터 내장 함수 : 벡터이름.함수() 로 사용가능
// 삽입, 삭제
v.push_back(value);  // value 값을 벡터의 맨 뒤에 추가
v.pop_back();  //마지막 원소 삭제
v.insert(pos, value);  // pos 위치에 value 삽입
v.erase(pos);  // pos 위치 요소 제거
v.front();  // 벡터의 첫번째 원소 반환
v.back();  // 벡터의 마지막 원소 반환
v.begin();  // 벡터의 첫번째 원소의 주소
v.end();  // 벡터의 마지막 원소의 주소
v.size();  // 벡터의 크기 반환

이외에도 많은 벡터 멤버 함수가 있지만 자주 사용하는 것만 정리해보았다.

벡터는 정렬에 서술한 sort 함수와 연계하여 정렬을 쉽게 할 수 있다는 장점이 있기 때문에 벡터를 활용하는 방법은 백준을 풀 때 꼭 알아야 한다고 생각한다.

Seoul, South Korea

jwsong5160@gmail.com

© 2026 Junwoo Song