분류 전체보기
-
알고리즘...69일지 2021. 10. 14. 14:22
B 트리 삽입 함수 구현 진행 노드에 키를 삽입하기 위해 여러 확인이 필요한데 우선 단순히 키를 삽입하는 함수를 구현했다. BTree::Insert /// /// 새 키를 기존 키의 왼쪽에 삽입한다. /// /// 삽입할 키 void BTreeNodeKey::AddKeyToPrev(BTreeNodeKey* newKey) { BTreeNodeKey* prevKey{ prev }; if (prevKey != nullptr) { prevKey->next = newKey; newKey->prev = prevKey; } newKey->next = this; prev = newKey; } /// /// 새 키를 기존 키의 오른쪽에 삽입한다. /// /// 삽입할 키 void BTreeNodeKey::AddKeyTo..
-
JUNGOL...150일지 2021. 10. 13. 14:43
Intermediate_Coder/백트래킹-DFS/비숍 문제 서양장기인 체스에는 대각선 방향으로 움직일 수 있는 비숍(bishop)이 있다. 과 같은 정사각형 체스판 위에 B라고 표시된 곳에 비숍이 있을 때 비숍은 대각선 방향으로 움직여 O로 표시된 칸에 있는 다른 말을 잡을 수 있다. 그런데 체스판 위에는 비숍이 놓일 수 없는 곳이 있다. 에서 체스판에 색칠된 부분은 비숍이 놓일 수 없다고 하자. 이와 같은 체스판에 서로가 서로를 잡을 수 없도록 하면서 비숍을 놓는다면 과 같이 최대 7개의 비숍을 놓을 수 있다. 색칠된 부분에는 비숍이 놓일 수 없지만 지나갈 수는 있다. 정사각형 체스판의 한 변에 놓인 칸의 개수를 체스판의 크기라고 한다. 체스판의 크기와 체스판 각 칸에 비숍을 놓을 수 있는지 없는지에..
-
알고리즘...68일지 2021. 10. 13. 13:14
B 트리 검색 함수 구현 기존 배열에서 포인터 방식으로 구현 변경. 기존 방식보다 가독성 측면에서 더 나은 것 같다. BTree::Exists /// /// B 트리를 확인하여 주어진 값이 트리에 존재하는지 여부를 반환한다. /// /// 확인할 값 /// 존재 여부 bool BTree::Exists(int data) { BTreeNode* node{ _root }; while (node != nullptr) { BTreeNodeKey* key{ node->keyRoot }; while (key != nullptr) { if (key->value == data) { return true; } if (data value) { node = key->left; break; } else if (ke..
-
유니티 화면 비율 고정 처리...13일지 2021. 10. 12. 18:43
유니티 함수의 문제점 해결 기존 유니티 함수가 가진 가운데로 정렬되는 문제를 해결하기 위해 WinAPI를 이용해 새롭게 구현한다. ResolutionController.cs using System; using System.Collections; using System.Runtime.InteropServices; using UnityEngine; using UnityEngine.UI; public class ResolutionController : MonoBehaviour { // 가로 고정 비율 public float AspectX { get; set; } = 16; // 세로 고정 비율 public float AspectY { get; set; } = 9; // 화면 크기 조정 할 횟수 public i..
-
JUNGOL...149일지 2021. 10. 12. 17:43
Intermediate_Coder/백트래킹-DFS/비숍 문제 서양장기인 체스에는 대각선 방향으로 움직일 수 있는 비숍(bishop)이 있다. 과 같은 정사각형 체스판 위에 B라고 표시된 곳에 비숍이 있을 때 비숍은 대각선 방향으로 움직여 O로 표시된 칸에 있는 다른 말을 잡을 수 있다. 그런데 체스판 위에는 비숍이 놓일 수 없는 곳이 있다. 에서 체스판에 색칠된 부분은 비숍이 놓일 수 없다고 하자. 이와 같은 체스판에 서로가 서로를 잡을 수 없도록 하면서 비숍을 놓는다면 과 같이 최대 7개의 비숍을 놓을 수 있다. 색칠된 부분에는 비숍이 놓일 수 없지만 지나갈 수는 있다. 정사각형 체스판의 한 변에 놓인 칸의 개수를 체스판의 크기라고 한다. 체스판의 크기와 체스판 각 칸에 비숍을 놓을 수 있는지 없는지에..
-
알고리즘...67일지 2021. 10. 12. 16:30
B 트리 삽입 알고리즘 문제 파악 삽입이 진행될 때 노드에 공간이 있는 경우 오름차순으로 정렬하여 삽입이 진행되어야 한다. 또, 삽입 후 오버플로우에 대한 처리를 위해 키를 배열로 묶는 게 아닌 포인터로 연결할 필요가 있어 보인다. #pragma region 노드 /// /// 노드의 키를 초기화한다. /// void BTreeNodeKey::Clear() { prev = nullptr; left = nullptr; value = 0; right = nullptr; next = nullptr; } /// /// 주어진 값을 키에 저장한다. /// /// 저장할 값 void BTreeNodeKey::Set(int data) { value = data; } /// /// B 트리 소멸자, 생성했던 키를 제거..
-
유니티 화면 비율 고정 처리...12일지 2021. 10. 10. 00:49
[StructLayout(LayoutKind.Sequential)] public struct RECT { public int Left; public int Top; public int Right; public int Bottom; } SetResolution의 문제점 유니티에서 제공하는 SetResolution 함수를 그대로 사용했을 때 문제라고 할 수 있는 부분은 화면을 이동시켰다가 크기를 변경했을 때 그 자리에서 바뀌는 게 아니라 화면 중앙으로 이동하는 부분이 존재한다. 키보드를 주로 컨트롤로 사용하는 게임이라면 문제가 되지 않을 수 있으나 방치형 혹은 자동 사냥이 있는 게임의 경우에는 모니터의 한쪽으로 치워두고 다른 작업을 하는 경우가 대부분이므로 이 방식은 문제가 있을 수 있다. 화면 이동 문제 ..
-
JUNGOL...148일지 2021. 10. 10. 00:33
Intermediate_Coder/백트래킹-DFS/비숍 문제 서양장기인 체스에는 대각선 방향으로 움직일 수 있는 비숍(bishop)이 있다. 과 같은 정사각형 체스판 위에 B라고 표시된 곳에 비숍이 있을 때 비숍은 대각선 방향으로 움직여 O로 표시된 칸에 있는 다른 말을 잡을 수 있다. 그런데 체스판 위에는 비숍이 놓일 수 없는 곳이 있다. 에서 체스판에 색칠된 부분은 비숍이 놓일 수 없다고 하자. 이와 같은 체스판에 서로가 서로를 잡을 수 없도록 하면서 비숍을 놓는다면 과 같이 최대 7개의 비숍을 놓을 수 있다. 색칠된 부분에는 비숍이 놓일 수 없지만 지나갈 수는 있다. 정사각형 체스판의 한 변에 놓인 칸의 개수를 체스판의 크기라고 한다. 체스판의 크기와 체스판 각 칸에 비숍을 놓을 수 있는지 없는지에..