set 과 unordered_set
set과 unordered_set은 C++ 표준 라이브러리의 컨테이너이다.
둘 다 중복되지 않는 고유의 값을 저장하는데 사용되지만 내부 동작 방식에 차이가 있다.
set은 Red-Black Tree / 이진 검색 트리 구조를 가지고 있어,데이터를 항상 정렬된 상태로 유지해 정렬된 데이터에 대한 검색이나 순차적인 접근이 필요할 때 적합하다.
따라서 데이터 삽입 시 자동으로 정렬되어 별도의 정렬 작업이 필요 없는 것이 장점이다.
그리고 메모리 사용량이 비교적으로 적다.
하지만 삽입/삭제 연산이 느린 단점을 가지고 있다. / O(log n)
unordered_set은 삽입, 삭제, 탐색의 시간 복잡도가 평균적으로 O(1)로 매우 빠른 대신 데이터가 정렬되지 않는다.
그리고 데이터가 해시 테이블에 저장되어서 오버헤드 발생시에 O(n) 으로 느려질 수 있다.
정리하자면 순차적으로 데이터를 순회하거나, 가장 큰 값 혹은 작은 값을 빠르게 찾아야하는 경우 그리고 메모리 사용을 최소화해야 하는 경우엔 set을 사용하는게 좋을 것이고,
데이터 정렬이 중요하지 않고, 삽입 및 검색 속도가 중요한 경우엔 unodered_set을 사용하는 것이 더 효율적이다.
sqrt 제곱근 함수
sqrt 함수는 C++ 표준 라이브러리에서 제공하는 수학 함수이고, 제곱근(SquareRoot)를 계산한다.
함수 원형: double sqrt(double x);
#include <cmath> 헤더를 포함해야한다.
함수 원형을 보면 부동소수점 연산을 사용함으로, 아주 큰 값이나 아주 작은 값에서는 약간의 오차가 발생할 수 있다.
정수 제곱근 판별, 약수 계산 등 다양한 수학적 문제에 활용될 수 있다.
나머지 값이 1이 되도록하는 가장 작은 자연수 X
n값의 최대 범위가 크기에 이 문제를 어떻게 풀지 고민하다가 n값을 x로 나눈 나머지가 1이 되기 위해, k = n - 1 값의 가장 작은 약수를 구하는 방법을 선택했다.
마켓플레이스에서 무료 콘텐츠 탐방
Environments - Industrial - Engine Hall
Smart Assets - Character & Creatures - Humans / Military Mercenary Bandit
무료 콘텐츠들을 살펴보던 중, Engine Hall 콘텐츠가 눈에 들어왔다. 공장 내부의 현실적인 어두운 분위기를 연출하고 기계들이 돌아가는 소리, 증기 sfx, 라이팅을 더 한다면 슈터 장르의 게임 level로 좋을 것 같다는 생각이 들었고,
그에 맞춰 특수 부대 군인 비주얼의 Mesh 에셋도 이 공간에 잘 어울어질 것으로 보여 선택하게 되었다.
'내배캠 > TIL' 카테고리의 다른 글
24.12.09 (월) (0) | 2024.12.09 |
---|---|
24.12.06 (금) (1) | 2024.12.06 |
24.12.05 (목) (0) | 2024.12.05 |
24.12.03 (화) (0) | 2024.12.03 |
24.12.02 (월) (0) | 2024.12.02 |