[자료구조] 배열과 리스트 그리고 벡터

1 분 소요

📚 Do it! 알고리즘 코딩테스트 (c++편)

배열(Array)

메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조

⇒ 값이 떨어져 있으면 안된다.

int arr[5] = {1, 2, 3, 4, 5};

배열의 특징

  1. 인덱스를 사용하여 값에 바로 접근
  2. 새로운 값을 삽입, 특정 인덱스에 있는 값을 삭제가 어렵 (push X, delete X)
    • 값을 삽입하거나 삭제하려면 해당 인덱스 주변의 값을 이동시키는 과정이 필요
  3. 배열의 크기는 선언할 때 지정 → 한 번 선언하면 수정 불가능 (정적 배열)
  4. 구조 간단

리스트(List)

값과 포인터를 묶은 노드를 포인터로 연결한 자료구조

#include <list>

std::list<int> myList;
myList.push_back(10);

리스트의 특징

  1. 인덱스가 없음 → 값에 접근하려면 Head 포인트부터 순서대로 접근 → 접근 속도가 느리다.
  2. 포인터로 연결되어 있어 데이터를 삽입하거나 삭제하는 연산 속도가 빠름
  3. 선언할 때 크기를 지정하지 않아도 됨 → 크기가 변하기 쉬운 데이터를 다룰 때 적절
  4. 포인터를 저장할 공간이 필요해 다소 복잡

벡터(Vector)

C++ 표준 라이브러리에 있는 자료구조 컨테이너 중 하나로, 배열의 단점을 보완한 동적 배열의 형태

#include <vector>

vector<int> A;
A.push_back(1);

벡터의 특징

  1. 동적으로 원소 추가 → 크기 변경 가능 (동적 배열)
  2. 맨 마지막 위치에 데이터를 삽입하거나 삭제는 문제 없음
    • 중간 데이터의 삽입 삭제는 배열과 같음
  3. 배열과 마찬가지로 인덱스를 이용해 각 데이터 직접 접근

문제 풀이

11720번: 숫자의 합

char to int- '0'
int to char ⇒ + '0'
string to _ ⇒ stoi(), stol(), stod(), stof()
_ to stringto_string()
https://github.com/KimGyeongLock/CodingTest/blob/main/111720.cpp


1546번: 평균

/ (나누기)할때 정수로 받는지 실수로 받는지 주의
https://github.com/KimGyeongLock/CodingTest/blob/main/1546.cpp

카테고리:

업데이트: