목록면접 (12)
오븐 노트

배열의 가장 대표적인 단점 : 특정 값을 찾을 경우 매우 느림 -> 검색 속도는 Map이 훨 빠름 해시 테이블 : 각각의 Key 값에 해시 함수를 적용하여 고유한 index를 생성, 해당 index를 활용하여 값을 저장하거나 검색. 실제로 값이 저장되는 장소를 버킷 이라고 함. 해시를 찾는 과정이 필요하게 되지만, 배열을 무작정 돌려서 찾는 비용보다 훨씬 싸다. 예를 들어 전화번호부의 저장명이 Key, 번호가 Value인 것과 비슷한 개념 https://www.inflearn.com/course/%EC%96%B8%EB%A6%AC%EC%96%BC5-%EA%B0%9C%EB%B0%9C%EC%9D%98%EC%A0%95%EC%84%9D-1/dashboard [입문자를 위한 UE5] Part1. 언리얼 엔진 블루프..
자료구조 -> 크게 선형, 비선형 두가지로 나뉜다 선형 구조 : 자료를 순차적으로 나열한 형태. ex) 배열, 연결 리스트, 스택 / 큐 비선형 구조 : 하나의 자료 뒤에 다수의 자료가 올 수 있는 형태. ex) 트리, 그래프 배열 : 사용 공간 미리 고정적으로 배정 - 장점 : 연속성 - 단점 : 추가, 삭제 불가 동적 배열 : 사용 공간을 유동적으로 배정 - 문제점 : 이사 비용 - 할당 : 실제 사용량보다 여유분을 두고 배정 (대략 1.5~2배) - 이사 횟수 최소화 배열, 맵의 빈도수가 높으니 빠르게 숙달되어야함 https://www.inflearn.com/course/%EC%96%B8%EB%A6%AC%EC%96%BC5-%EA%B0%9C%EB%B0%9C%EC%9D%98%EC%A0%95%EC%84%..
#include using namespace std; #include #include #include #include #include int main() { srand(static_cast(time(nullptr))); vector v; for (int i = 0; i < 100; i++) { int num = rand() % 100; v.push_back(num); } // Q1) number라는 숫자가 벡터에 체크하는 기능 (bool, 첫 등장 iterator) { int number = 50; bool found = false; vector::iterator it = v.end(); // TODO for (unsigned int i = 0; i < v.size(); i++) { int data = ..
#include using namespace std; #include #include #include #include #include // 면접의 경우 map과 set의 구조와 같은 세부 내용을 물어보기도 하고, map과 multimap의 차이점에 대해서도 물어보기도 한다. int main() { // map : (Key, Value) // map set s; // value가 필요없고 key만 필요로 하는 경우 // set는 기본적으로 map과 일치하지만 key, value가 일치한다는 특징이 있다. // multimap : map에서 중복 키를 허용한 것 // multiset : set에서 중복 키를 허용한 것 // 위 두개는 자주 사용하지는 않는다. // 주 기능 : 넣기 빼기 찾기 순회하기 // ..
#include using namespace std; #include #include #include #include class Player { public: public: Player() : _playerId(0) { } Player(int playerId) : _playerId(playerId) { } public: int _playerId; }; template struct Pair { T1 t1; T2 t2; }; int main() { // 연관 컨테이너 // map : 균형 이진 트리 (AVL) // - 노드 기반 class Node { public: Node* _left; Node* _right; // DATA pair _data; //int _key; //Player* _value; }; ..
#include using namespace std; #include #include template class Node { public: Node() : _next(nullptr), _prev(nullptr), _data(T()) { } Node(const T& value) : _next(nullptr), _prev(nullptr), _data(value) { } public: Node* _next; Node* _prev; T _data; }; template class Iterator // Node pointer를 내부적으로 들고있는 역할 { public: Iterator() : _node(nullptr) { } Iterator(Node* node) : _node(node) { } // 자기 자신의 ..
#include using namespace std; #include #include class Node // 이중 연결 리스트 { public: Node* _next; Node* _prev; int _data; }; // 단일 / 이중 / 원형 // list : 연결 리스트 // [] 한칸이 노드의 개념 // [1] -> [2] -> [3] -> [4] -> [5] // [1] [2] [3] [4] [5] // [1] [2] [3] [4] [5] [1] int main() { // list (연결 리스트) // - list의 동작 원리 // - 중간 삽입/삭제 // - 처음/끝 삽입/삭제 // - 임의 접근 list li; list::iterator itRemember; for (int i = 0; i..
#include using namespace std; #include #include class Node // 단일 연결 리스트 { public: Node* _next; int _data; }; // 단일 / 이중 / 원형 // list : 연결 리스트 // [] 한칸이 노드의 개념 // [1] -> [2] -> [3] -> [4] -> [5] // [1] [2] [3] [4] [5] // [1] [2] [3] [4] [5] [1] int main() { // list (연결 리스트) // - list의 동작 원리 // - 중간 삽입/삭제 // - 처음/끝 삽입/삭제 // - 임의 접근 list li; for (int i = 0; i < 100; i++) li.push_back(i); //li.push_..