Make Unreal REAL.
article thumbnail
연결 리스트

코딩 테스트를 위한 자료 구조와 알고리즘 with C++ 노드란? typedef struct { // 데이터 int data; // 다음 노드의 포인터 Node *next; } Node; 연결 리스트의 구조 노드의 링크로 구성된다. 각 노드는 다른 메모리 Chunk에 저장된다. 시작 노드를 Head, 마지막 노드를 Tail이라고 한다. Tail의 next 포인터는 NULL을 가리켜 끝임을 표시한다. 연결 리스트의 성능 원소 접근은 Head에서 시작하여 링크를 따라가야 하므로 O(n) 시간에 수행된다. 특정 원소를 알고 있을 때, 삭제 혹은 뒤에 원소를 추가하는 것은 O(1) 시간에 수행된다. 모든 노드가 다른 메모리 위치에 존재하므로 Cache locality (캐시 지역성)을 기대할 수 없다. 배열과 ..

article thumbnail
정적 배열과 동적 배열

코딩 테스트를 위한 자료 구조와 알고리즘 with C++ 배열의 메모리 구조 단일 메모리 Chunk에 저장된다. 각 원소는 Base Address로부터의 오프셋을 통해 접근한다. 배열의 성능 원소 접근은 상수 시간 O(1)에 수행된다. 정적, 동적 배열은 성능 면에서 동일하다. Cache locality (캐시 지역성)으로 인해 순차 접근에서 좋은 성능을 낸다. Cache locality란? 특정 원소에 접근할 때 주변 원소들을 함께 가져와 접근 속도가 빨라지는 속성 배열을 사용해야 할 때 원소의 개수가 변하지 않는 경우(혹은 최대 개수가 정해진 경우) 순차 접근이 많은 경우 원소의 삽입 삭제가 적은 경우 주간 청소 당번 목록 최대 100명의 회원 목록 정적 배열 int arr[10]; Stack에 할당..

article thumbnail
Git의 Rebase

The Ultimate Git Course - with Applications in Unreal Engine Three-way Merge 후에 마지막 commit은 2개의 부모 커밋에 대한 포인터를 갖게 된다. 이로 인해 commit 그래프상 루프가 생기고 commit 기록 관리가 어려워진다. Rebase는 현재 Branch의 Base commit을 기준 Branch의 마지막 commit으로 변경해준다. 이를 통해 commit의 순서를 정할 수 있게 되고 Merge는 Fast-forward 방식으로 진행되게 된다.

article thumbnail
Git의 Merge

The Ultimate Git Course - with Applications in Unreal Engine Fast-forward Merge 현재 Branch 포인터를 Merge할 Branch 포인터와 동일한 commit을 가리키도록 한다. 현재 Branch 포인터가 가리키는 commit이 Merge할 Branch 포인터가 가리키는 commit의 조상일 때 새로운 Branch를 만든 후 기존 Branch에서는 변경 사항이 없었다는 뜻이다. 3-way (Recursive) Merge 파일을 라인, 블록 단위로 비교하여 병합한다. 현재 Branch 포인터가 가리키는 commit이 Merge할 Branch 포인터가 가리키는 commit의 조상이 아닐 때 LCA (최소 공통 조상)에서 둘 다 변경 사항이 있었..

article thumbnail
Git의 Branch

The Ultimate Git Course - with Applications in Unreal Engine Git은 데이터를 여러 개의 스냅샷으로 관리한다. commit할 때 commit 오브젝트가 생성된다. commit 오브젝트 Staging Area (Index)에 있던 변경 사항들로 구성된 스냅샷에 대한 포인터 Author, Committer, 타임스탬프 등 기타 정보 부모 commit의 포인터 Branch 포인터 현재 Branch에서 가장 마지막 commit을 가리키는 포인터 새로운 commit이 생성될 때마다 자동으로 갱신된다. 새로운 Branch를 생성하는 것은 가장 마지막 commit을 가리키는 또 다른 포인터를 만드는 것이다. 현재 어떤 Branch에 있는지는 HEAD 포인터에 의해 결정..

article thumbnail
Level 0. 캐릭터의 좌표

Level 0. 캐릭터의 좌표 #include #include #include using namespace std; vector solution(vector keyinput, vector board) { map mp = {{"left", {-1, 0}}, {"right", {1, 0}}, {"up", {0, 1}}, {"down", {0, -1}}}; vector answer = {0, 0}; vector limit = {board[0] / 2, board[1] / 2}; for (string key : keyinput) { answer[0] = max(-limit[0], min(answer[0] + mp[key][0], limit[0])); answer[1] = max(-limit[1], min(ans..

검색 태그