[내일배움캠프 Day42] 알고리즘 수업 Wrap-Up

2025. 2. 18. 20:56·내일배움캠프/TIL

STL이란?

STL은 C++에 내장된 템플릿 기반의 라이브러리이며, 크게 컨테이너, 반복자(Iterator), 그리고 알고리즘으로 구성되어 있다.

  • 컨테이너(Container): 데이터를 저장·관리하는 구조체(자료구조)들의 집합
  • 반복자(Iterator): 컨테이너 내 데이터를 순회(Navigation)할 수 있도록 도와주는 일종의 '포인터' 역할
  • 알고리즘(Algorithm): 정렬, 탐색, 삽입, 삭제 등과 같은 로직을 매우 효율적이고 제네릭하게 제공

https://dev0404.tistory.com/5

 

[사전 캠프 Day4] STL

요즘 기초가 부족하다고 느껴 프로그래밍 책들을 읽는 중입니다.최근에는 effective c++, 객체지향의 사실과 오해 책을 읽으면서 노션에 정리하고 있는데 effective c++는 블로그에 작성하고자 합니다.

dev0404.tistory.com

 

순차 컨테이너(sequential container)

https://dev0404.tistory.com/53

 

[내일배움캠프 Day31] 순차 컨테이너

순차 컨테이너(sequential container)는 원소들이 선형으로 배열된 데이터 구조를 나타냅니다. 컨테이너헤더설명array표준 C 언어 스타일 배열vector활용도가 높은 기본 컨테이너list연결 리스트(linked lis

dev0404.tistory.com

 

연관 컨테이너(associative container)

  • map: 키(key)와 값(value)을 한 쌍으로 묶어서 관리
    • 키는 유일해야 하며, 검색, 삽입, 삭제가 평균 O(log N)
      • 이게 가능한 이유는 내부적으로 이진 탐색 트리(레드-블랙 트리)를 사용하기 때문!
    • 주요 함수
      • insert(pair): 키-값 쌍 삽입
      • erase(key): 키로 요소 제거
      • find(key): 키로 요소 검색 (iterator 반환)
        • key가 있으면 해당 key의 iterator를 반환하나 없으면 end() 리턴!
      • operator[key]: 키로 값에 접근 또는 삽입
      • size(): 요소 개수 반환
  • set: 키만 저장. 즉, value가 따로 필요 없을 때 사용
    • 중복이 불가능 → 즉, 어떤 원소가 이미 있으면 다시 넣어도 들어가지 않음
    • 역시나 검색, 삽입, 삭제가 평균 O(log N)
      • 내부 구조는 map과 동일(레드-블랙 트리). 단, 키만 존재한다는 차이가 있음
    • 주요 함수
      • insert(value): 요소 추가
      • erase(value): 요소 제거
      • find(value): 요소 검색 (iterator 반환)
      • size(): 요소 개수 반환
      • lower_bound(value): 지정된 값 이상의 첫 번째 요소를 반환
      • upper_bound(value): 지정된 값보다 큰 첫 번째 요소를 반환
  • 중복키가 가능한 것은 이름에 multi가 붙는다.

공통적으로 검색, 삽입, 삭제가 평균 O(log N)이라는 특징이 있는데 이게 가능한 이유는 레드-블랙 트리를 사용하기 때문

레드-블랙 트리에 대한 자세한 내용 :

https://dev0404.tistory.com/55

 

[자료구조] 레드 블랙 트리

레드 블랙 트리는 균형 이진 탐색 트리로 탐색, 삽입, 삭제 모두 시간 복잡도가 O(logn)입니다. C++ STL의 set, multiset, map, multimap이 이 레드 블랙 트리를 이용해 구현되어 있습니다. 레드 블랙 트리가

dev0404.tistory.com

 

컨테이너 어댑터(container adapter)

우선순위 큐 (priority_queue)

  • 내부적으로 힙(Heap) 자료구조를 사용
  • 삽입, 삭제(pop)은 항상 O(log N) 이고, top()(가장 우선순위 높은 원소 조회)은 O(1)
  • 가장 큰/작은 원소를 순식간에 추출해야 하는 문제에 최적
  • 세 번째 인자를 통해 최소힙을 만들거나 커스텀으로 정의할 수 있다

 

알고리즘(algorithm)

  • count() : 컨테이너 내에서 특정 값이 나타나는 횟수를 센다. O(N)
  • sort() : 컨테이너를 정렬하는 함수. O(NlogN)
    • sort(시작 반복자, 끝 반복자, 비교 함수)
  • next_permutation(), prev_permutation() : 가능한 모든 순열을 생성한다. O(N*N!)
    • 가능한 순열이 있으면 true를 반환, 더 이상 없으면 false를 반환
    • prev_permutation은 주어진 범위를 사전순으로 이전 순열로 바꿔줌
  • unique() : 컨테이너 내 중복되는 원소들을 뒤로 밀어내고 중복되지 않은 원소들만 남겨 새로운 범위의 끝 반복자를 반환. O(N)
  • binary_search() : 컨테이너에서 주어진 범위 내 원소에 이진 탐색을 수행. O(logN)
    • 탐색 수행하고 원소가 있으면 true, 없으면 false 반환
  • max_element(), min_element() : 컨테이너 내에서 최댓값, 최솟값의 위치를 반환. O(N)
  • nth_element() : K번째 값을 찾는 함수. O(n)
  • partial_sum() : 연속 구간의 합을 구하는 함수. O(N)
  • accumulate() : 총 합을 구하는 함수. O(N)
    • 4번째 인자를 통해 원하는 연산 가능
  • lower_bound() / upper_bound() : x 이상의 값이 처음 나오는 위치 반환, x 초과 값이 처음 나오는 위치 반환. O(logN)
  • transform() : 입력 범위의 각 요소에 주어진 연산을 적용하여 새로운 값을 생성하는 함수. O(N)

 

 

출처 : 코딩테스트 합격자 되기 책, 내일배움캠프 알고리즘 수업

'내일배움캠프 > TIL' 카테고리의 다른 글

[내일배움캠프 Day43] BT 애니메이션 실행  (0) 2025.02.19
[내일배움캠프 Day42] WIL  (5) 2025.02.18
[내일배움캠프 Day41] 언리얼 AI 구현  (2) 2025.02.17
[내일배움캠프 Day38] 8주차 과제 진행  (0) 2025.02.12
[내일배움캠프 Day37] TWeakObjectPtr  (0) 2025.02.11
'내일배움캠프/TIL' 카테고리의 다른 글
  • [내일배움캠프 Day43] BT 애니메이션 실행
  • [내일배움캠프 Day42] WIL
  • [내일배움캠프 Day41] 언리얼 AI 구현
  • [내일배움캠프 Day38] 8주차 과제 진행
개발자 밍
개발자 밍
dev0404 님의 블로그 입니다.
  • 개발자 밍
    Developer
    개발자 밍
  • 전체
    오늘
    어제
    • 분류 전체보기 (88)
      • 강의 (8)
        • UE Climbing System (3)
        • UE Dungeon (1)
        • HCI (4)
      • 책 (18)
        • 객체지향의 사실과 오해 (5)
        • Effective C++ (3)
        • 이득우의 게임 수학 (4)
        • 이것이 취업을 위한 컴퓨터 과학이다 (4)
        • 리뷰 (2)
      • C++ (2)
      • 알고리즘 (2)
      • 자료구조 (1)
      • Unreal (4)
      • 내일배움캠프 (52)
        • TIL (52)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Effective
    컴퓨터구조
    언리얼
    자료구조
    c++
    알고리즘
    그래픽스
    내일배움캠프
    객체지향
    게임수학
    컴퓨터 구조
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
개발자 밍
[내일배움캠프 Day42] 알고리즘 수업 Wrap-Up
상단으로

티스토리툴바