분류 전체보기
-
JUNGOL...153일지 2021. 10. 19. 18:55
Intermediate_Coder/백트래킹-DFS/비숍 문제 서양장기인 체스에는 대각선 방향으로 움직일 수 있는 비숍(bishop)이 있다. 과 같은 정사각형 체스판 위에 B라고 표시된 곳에 비숍이 있을 때 비숍은 대각선 방향으로 움직여 O로 표시된 칸에 있는 다른 말을 잡을 수 있다. 그런데 체스판 위에는 비숍이 놓일 수 없는 곳이 있다. 에서 체스판에 색칠된 부분은 비숍이 놓일 수 없다고 하자. 이와 같은 체스판에 서로가 서로를 잡을 수 없도록 하면서 비숍을 놓는다면 과 같이 최대 7개의 비숍을 놓을 수 있다. 색칠된 부분에는 비숍이 놓일 수 없지만 지나갈 수는 있다. 정사각형 체스판의 한 변에 놓인 칸의 개수를 체스판의 크기라고 한다. 체스판의 크기와 체스판 각 칸에 비숍을 놓을 수 있는지 없는지에..
-
알고리즘...72일지 2021. 10. 19. 15:04
B 트리 삽입 오버플로우 처리 진행 삽입 가능한 형제 노드가 없는 경우 기존 노드의 중간 값을 기준으로 두 개의 노드로 분리하고 중간 값을 부모로 삽입한 뒤 좌, 우 자식 노드로 기존 중간 값을 저장해 줘야 한다. 또, 삽입된 부모 노드에서 형제 키 값이 가리키는 노드를 적절하게 수정해 줘야 한다. 이후 부모 노드의 크기가 오버된 경우 오버플로우 처리를 부모 노드에 대해 반복한다. ※ 만약 처리한 노드가 루트 노드면 중간 키 값을 새로운 노드로 추가하고 새 노드를 루트로 변경한다. BTreeNode::GetMiddleKey /// /// 노드의 키 중 중간 값을 가진 키를 떼어내 반환한다. /// /// 중간 키 BTreeNodeKey* BTreeNode::GetMiddleKey() { size_t mi..
-
알고리즘...71일지 2021. 10. 18. 16:53
B 트리 삽입 오버플로우 처리 오버 플로우 처리 중 삽입 가능한 형제가 존재한 경우에 대한 처리를 구현한다. 오버 플로우가 발생한 노드의 형제 노드의 위치가 왼쪽인 경우 가장 작은 키를 부모에 넣고 부모의 형제 노드를 가리키는 키와 값을 바꾼 뒤 해당 키를 형제 노드에 삽입하면 된다. 이를 위해 Node의 Insert 함수를 수정하여 Key가 직접 입력된 경우를 적절하게 처리해 주는 함수를 추가한다. BTreeNodeKey /// /// 새 키를 기존 키의 오른쪽에 삽입한다. /// /// 삽입할 키 void BTreeNodeKey::AddKeyToNext(BTreeNodeKey* newKey) { BTreeNodeKey* nextKey{ next }; if (nextKey != nullptr) { ne..
-
유니티 화면 비율 고정 처리...14일지 2021. 10. 15. 02:05
WinAPI의 WM_SIZING 오버 로딩을 통한 화면 비율 고정 구글링을 하다 보니 WinAPI의 WM_SIZING를 오버 로딩하여 화면 비율을 조정하는 코드가 존재했다. 오버 로딩 한 코드만 따로 가져와서 보면 다음과 같다. winProc 오버 로딩 IntPtr wndProc(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam) { // Check message type. // We are only interested in resize events, so ignore everything else. if (msg == WM_SIZING) { // Get window size struct. RECT rc = (RECT)Marshal.PtrToStructure(lP..
-
JUNGOL...152일지 2021. 10. 15. 01:52
Intermediate_Coder/백트래킹-DFS/비숍 문제 서양장기인 체스에는 대각선 방향으로 움직일 수 있는 비숍(bishop)이 있다. 과 같은 정사각형 체스판 위에 B라고 표시된 곳에 비숍이 있을 때 비숍은 대각선 방향으로 움직여 O로 표시된 칸에 있는 다른 말을 잡을 수 있다. 그런데 체스판 위에는 비숍이 놓일 수 없는 곳이 있다. 에서 체스판에 색칠된 부분은 비숍이 놓일 수 없다고 하자. 이와 같은 체스판에 서로가 서로를 잡을 수 없도록 하면서 비숍을 놓는다면 과 같이 최대 7개의 비숍을 놓을 수 있다. 색칠된 부분에는 비숍이 놓일 수 없지만 지나갈 수는 있다. 정사각형 체스판의 한 변에 놓인 칸의 개수를 체스판의 크기라고 한다. 체스판의 크기와 체스판 각 칸에 비숍을 놓을 수 있는지 없는지에..
-
알고리즘...70일지 2021. 10. 15. 00:55
B 트리 삽입 메서드 구현 진행 적절한 노드를 검색 함수를 수정하여 다음과 같이 구현했다. BTree::GetProperNodeToInsert(int data) /// /// 주어진 data를 삽입할 수 있는 적절한 노드를 찾아 반환한다. /// /// 삽입할 값 /// 데이터를 삽입할 수 있는 노드 BTreeNode* BTree::GetProperNodeToInsert(int data) { if (_root == nullptr) { _root = _nodeManager.Pop(); return _root; } BTreeNode* node{ _root }; BTreeNode* prevNode{ nullptr }; while (node != nullptr) { if (node->IsAbleToInsert(..
-
[유니티/안드로이드 11] 범위 지정 저장소 / 시스템에서 제공하는 디렉터리 경로 얻어오는 방법게임 엔진/Unity 2021. 10. 14. 16:11
※ 디렉터리 경로가 필요한 경우 다음 함수 사용 private static string GetAndroidExternalFilesDir() { using (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { using (AndroidJavaObject context = unityPlayer.GetStatic("currentActivity")) { // Get all available external file directories (emulated and sdCards) object[] args = { null }; AndroidJavaObject[] externalFilesDirectories = ..
-
JUNGOL...151일지 2021. 10. 14. 15:53
Intermediate_Coder/백트래킹-DFS/비숍 문제 서양장기인 체스에는 대각선 방향으로 움직일 수 있는 비숍(bishop)이 있다. 과 같은 정사각형 체스판 위에 B라고 표시된 곳에 비숍이 있을 때 비숍은 대각선 방향으로 움직여 O로 표시된 칸에 있는 다른 말을 잡을 수 있다. 그런데 체스판 위에는 비숍이 놓일 수 없는 곳이 있다. 에서 체스판에 색칠된 부분은 비숍이 놓일 수 없다고 하자. 이와 같은 체스판에 서로가 서로를 잡을 수 없도록 하면서 비숍을 놓는다면 과 같이 최대 7개의 비숍을 놓을 수 있다. 색칠된 부분에는 비숍이 놓일 수 없지만 지나갈 수는 있다. 정사각형 체스판의 한 변에 놓인 칸의 개수를 체스판의 크기라고 한다. 체스판의 크기와 체스판 각 칸에 비숍을 놓을 수 있는지 없는지에..