분류 전체보기
-
유니티 화면 비율 고정 처리...10일지 2021. 10. 5. 18:43
화면 비율 고정 처리 동작 안 하는 경우 확인 비율 처리가 동작하지 않는 경우에 대한 처리를 확인하기 위해 코드를 조금 정리해서 상태에 따라 값을 출력하도록 했다. 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 Text m_debugText; #regi..
-
JUNGOL...145일지 2021. 10. 5. 17:00
Intermediate_Coder/백트래킹-DFS/스도쿠 문제 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루어진 정사각형 판 위에서 이뤄지는데, 게임 시작 전 몇 몇 칸에는 1부터 9까지의 숫자 중 하나가 쓰여 있다. 나머지 빈 칸을 채우는 방식은 다음과 같다. (1) 각각의 가로줄과 세로줄에는 1부터 9까지의 숫자가 한 번씩만 나타나야 한다. (2) 굵은 선으로 구분되어 있는 3x3 정사각형 안에도 1부터 9까지의 숫자가 한 번씩만 나타나야 한다. 위의 예의 경우, 첫째 줄에는 1을 제외한 나머지 2부터 9까지의 숫자들이 이미 나타나 있으므로 첫째 줄 ..
-
알고리즘...62일지 2021. 10. 5. 16:54
B 트리의 노드 관리를 위한 매니저 클래스 이전 트리의 구현과 마찬가지로 노드 관리를 위한 매니저 클래스를 구현한다. BTreeNode struct BTreeNode; /// /// B 트리의 노드에서 사용할 키 /// struct BTreeNodeKey { BTreeNodeKey() : left(nullptr), value(0), right(nullptr) {} void Clear() { left = nullptr; value = 0; right = nullptr; } BTreeNode* left; int value; BTreeNode* right; }; /// /// B 트리에 사용할 노드 /// struct BTreeNode { static const size_t TotalKeyCount{ 4 };..
-
알고리즘...61일지 2021. 10. 3. 14:49
B 트리 구현을 위한 노드 구조 확인 일단 하드웨어에 맞추지 않고 적당한 크기로 만들어 구조와 동작을 확인하고자 한다. 키를 4개를 가지고 자식 링크를 5개, 부모 링크를 1개 가지는 노드를 구성하자. BTreeNode struct BTreeNode { BTreeNode* parent; BTreeNode* child0; int key1; BTreeNode* child1; int key2; BTreeNode* child2; int key3; BTreeNode* child3; int key4; BTreeNode* child4; }; 단순한 나열로는 사용에 굉장한 불편이 따르게 될 것 같다. 해소를 위해 키와 자식을 가리키는 키 구조체를 만들어야 할 것 같다. BTreeNodeKey와 BTreeNode ///..
-
알고리즘...60일지 2021. 9. 30. 18:57
B 트리 작업 성능 분석 이진 검색 트리는 균형이 잘 맞을 경우 높이가 log_2-n 에 근접할 수 있다. 마찬가지로 d진 검색 트리가 균형이 잘 맞으면 높이가 log_d-n에 근접할 수 있다. 또한 B 트리는 루트를 제외한 노드는 최소 └d/2┘개의 자식을 가져야 하므로 B 트리의 깊이는 최악의 경우에도 대략 log_d/2-n 보다 깊을 수 없다. B 트리의 깊이는 다음의 범위에서 결정된다. [log_d-n, log_d/2-n] B 트리의 작업 수행시간은 디스크 접근 횟수를 기준으로 하며 B 트리의 모든 작업의 시간 복잡도는 점근적으로 Ο(logn)이 된다. ※ 노드를 메모리에 올린 이후 작업 시간이 디스크 접근 시간에 비하면 무시할 수 있을 정도로 작기 때문에 디스크 접근 횟수를 기준으로 한다. 더보..
-
유니티 화면 비율 고정 처리...9일지 2021. 9. 29. 14:10
마우스 버튼 처리 완료 이전에 조사한 결과와 추가로 GetAsyncKeyState이 어떤 값을 리턴하는 지를 확인한 결과 마우스 버튼을 뗐을 때 화면 비율 변경 처리가 진행되도록 처리할 수 있었다. 먼저, GetAsyncKeyState의 리턴은 다음과 같다. 0x8000 키가 현재 눌려진 상태 0x0001 뗀 상태에서 눌린 상태로 변경되는 순간의 상태 ※ 0x0001은 해당 순간을 놓칠 수 있으므로 0x8000을 사용했다. 그런데 마우스를 놓는 순간에 다른 위치로 마우스를 이동하면 크기 조정이 제대로 되지 않는 문제가 발생했다. 이 문제는 마우스를 놓는 타이밍을 정확하게 받거나 움직이는 것을 무시할 수 있는 방법을 찾아봐야 할 것 같다. 더보기 참고문헌 C++ Forum.GetAsyncKeyState
-
JUNGOL/Intermediate_Coder/백트래킹-DFS/1027 : 좋은수열코딩 테스트/JUNGOL 2021. 9. 29. 11:38
Intermediate_Coder/백트래킹-DFS/좋은수열 문제 숫자 1 2 3으로만 이루어지는 수열이 있다. 임의의 길이의 인접한 두 개의 부분 수열이 동일한 것이 있으면, 그 수열을 나쁜 수열이라고 부른다. 그렇지 않은 수열은 좋은 수열이다. 다음은 나쁜 수열의 예이다. (밑줄 부분때문에 나쁜 수열이다.) 33 32121323 123123213 다음은 좋은 수열의 예이다. 2 32 32123 1232123 길이가 N인 좋은 수열들을 N자리의 정수로 보아 그 중 가장 작은 수를 나타내는 수열을 구하는 프로그램을 작성하라. 예를 들면 1213121과 2123212는 모두 좋은 수열이지만 그 중에서 작은 수를 나타내는 수열 1213121이다. 입력 형식 입력파일은 숫자 N 하나로 이루어진다. N은 1 이..
-
알고리즘...59일지 2021. 9. 29. 11:17
B 트리에서의 삭제 입력된 값을 x라 할 때, x를 삽입하는 방법은 다음과 같다. x를 갖고 있는 노드를 찾는다. 이 노드가 리프 노다가 아니면 x의 직후 원소 y를 가진 리프 노드 r을 찾아 x와 y를 맞바꾼다. 리프 노드에서 x를 제거한다. x 제거 후 노드에 언더플로우가 발생하면 키를 가져올 수 있는 형제 노드가 있으면 해당 키를 가져온다. 키를 가져올 수 있는 형제 노드가 없으면 형제 노드와 병합한다. 부모 노드에 언더플로우 발생 시 부모 노드를 문제 노드로 하여 이상을 반복한다. - B 트리 삭제 알고리즘 주어진 키를 삭제한 뒤 언더플로우에 대한 처리를 진행한다. B 트리 삭제 알고리즘 BTreeDelete(t, x, v) { if (v가 리프 노드가 아님) then { x의 직후 원소 y를 가..