분류 전체보기
-
KDB 트리 알고리즘프로그래밍 기초/알고리즘 2021. 11. 30. 14:07
KDB 트리 B 트리를 다차원 검색 트리로 확장한 트리 자료구조이다. KDB 트리는 노드의 키를 통해 분기하는 게 아니라 전체 영역을 쪼개가며 진행하게 된다. KDB 트리에는 다음의 두 종류의 노드가 존재한다. 영역 노드 트리의 차원에 따라 노드가 가지는 공간을 표현하는 노드 키 노드 실제 키와 소속된 페이지 번호를 가지는 노드 이때, k 차원의 키를 사용하는 영역 노드는 다음과 같이 표현된다. (, , ... , ) ※ KDB 트리의 모든 내부 노드는 영역 노드이며, 모든 리프 노드는 키 노드이다. KD 트리에서의 검색 KD 트리의 검색은 다음의 순서를 따른다. 루트 노드에서부터 검색하려는 키가 포함된 영역을 가지는 영역 노드를 따라 진행한다. 리프 노드에 도달한 경우 리프 노드에 검색하려는 키가 존재..
-
알고리즘...88일지 2021. 11. 26. 20:01
KDB 트리 삽입과 삭제) KDB 트리의 삽입 처리는 B 트리와 유사하게 처리가 진행된다. 먼저, 적절한 리프 노드를 찾고 해당 노드에 공간이 있으면 (키, 페이지 번호) 쌍을 삽입하고 종료한다. 해당 노드에 공간이 없는 경우 형제 노드를 확인하여 재분배하고 종료한다. 만약 재분배가 불가능한 경우리프 노드를 분할하고 분할된 말단 노드를 가리킬 새로운 노드를 부모 노드에 삽입한다. 이 때 부모 노드에 공간이 있으면 그대로 종료하고 아니면 부모 노드를 기준으로 새롭게 처리를 진행한다. 특정 노드가 분할되어 부모 노드에 할당됐을 때 공간을 수용할 수 없는 경우 분할된 기준을 부모 노드에 적용하여 두 노드로 분할한다. 삭제의 경우도 기본적으로 B 트리의 처리와 비슷하게 진행되며 병합의 처리가 부모 노드에서도 언..
-
JUNGOL/Intermediate_Coder/백트래킹-DFS/1106 : 장기코딩 테스트/JUNGOL 2021. 11. 25. 12:20
Intermediate_Coder/백트래킹-DFS/장기 문제 N×M장기판에 졸 한개와 말 한개가 놓여 있다. 말의 이동 방향이 다음과 같다고 할 때, 말이 최소의 이동횟수로 졸을 잡으려고 한다. 말이 졸을 잡기 위한 최소 이동 횟수를 구하는 프로그램을 작성해보자. 입력 형식 첫 줄은 장기판 행의 수(N)와 열의 수(M)를 받는다(1≤N, M≤100). 둘째 줄은 말이 있는 위치의 행(R), 열(C)의 수와 졸이 있는 위치의 행(S), 열(K)의 수를 입력받는다. 단, 장기판의 제일 왼쪽 위의 위치가 (1,1)이다. 각 행과 열은 R(1≤R≤N), C(1≤C≤M), S(1≤S≤N), K(1≤K≤M)이다. 출력 형식 말이 졸을 잡기 위한 최소 이동 횟수를 출력한다. 입력 예 9 9 3 5 2 8 출력 예 2..
-
알고리즘...87일지 2021. 11. 25. 09:27
KDB 트리 검색) KDB 트리의 검색은 루트 노드에서 부터 찾는 키가 포함되는 영역을 따라 진행하여 리프 노드에 도달한 경우 해당 노드에서 해당 키 정보가 있으면 해당 페이지에서 정보를 가져오고 없으면 검색을 실패한 것으로 판정한다. KDB 트리는 특정 영역을 검색 조건으로 해당 영역에 포함되는 데이터를 모두 가져올 수 있는데, 검색하려는 영역을 포함하는 영역을 모두 따라 이동하여 리프노드에 도달하면 해당하는 정보를 모두 페이지에서 가져오도록 한다. 더보기 참고문헌 한빛아카데미.문병로.(2016.07.24).쉽게 배우는 알고리즘
-
알고리즘...86일지 2021. 11. 24. 20:18
KDB 트리 기본) B 트리를 다차원 검색 트리로 확장한 트리 자료구조이다. 검색 시에는 키에 따라 분기가 되는 게 아니라 루트 노드로 부터 전체 공간을 쪼개면서 검색을 진행한다. KDB 트리는 두 종류의 노드로 구성된다. 영역 노드 트리의 차원에 따라 노드가 차지하는 공간을 표현하는 노드 키 노드 실제 키와 소속된 페이지 번호를 가지는 노드 k 차원의 키를 사용하는 경우 영역은 다음과 같이 표현한다. (, , ... , ) 더보기 참고문헌 한빛아카데미.문병로.(2016.07.24).쉽게 배우는 알고리즘
-
JUNGOL...163일지 2021. 11. 24. 19:29
Intermediate_Coder/백트래킹-DFS/장기 문제 N×M장기판에 졸 한개와 말 한개가 놓여 있다. 말의 이동 방향이 다음과 같다고 할 때, 말이 최소의 이동횟수로 졸을 잡으려고 한다. 말이 졸을 잡기 위한 최소 이동 횟수를 구하는 프로그램을 작성해보자. 입력 형식 첫 줄은 장기판 행의 수(N)와 열의 수(M)를 받는다(1≤N, M≤100). 둘째 줄은 말이 있는 위치의 행(R), 열(C)의 수와 졸이 있는 위치의 행(S), 열(K)의 수를 입력받는다. 단, 장기판의 제일 왼쪽 위의 위치가 (1,1)이다. 각 행과 열은 R(1≤R≤N), C(1≤C≤M), S(1≤S≤N), K(1≤K≤M)이다. 출력 형식 말이 졸을 잡기 위한 최소 이동 횟수를 출력한다. 입력 예 9 9 3 5 2 8 출력 예 2..
-
[유니티/안드로이드 11] WRITE_EXTERNAL_STORAGE 사용하지 않고 스크린샷 갤러리에 노출 시키기게임 엔진/Unity 2021. 11. 24. 19:26
※ SaveImageToGallery 함수를 사용하여 이미지를 갤러리에 저장한다. protected enum ImageFormat { JPG, PNG } protected const string MEDIA_STORE_IMAGE_MEDIA = "android.provider.MediaStore$Images$Media"; protected static AndroidJavaObject m_Activity; protected static AndroidJavaObject Activity { get { if (m_Activity == null) { AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); m_Activ..
-
유니티 화면 비율 고정 처리...20일지 2021. 11. 18. 19:57
최대 크기, 최소 크기 조정 가로, 세로에서 변경 시에 사이즈가 변경된 뒤 다시 크기를 맞춰주는 처리가 없기 때문에 크기가 무한정 작아질 수 있는데 이 처리는 기존 코드에서도 동일한 것으로 보인다. 최소 사이즈에서 위치 고정 일단 크기 조정 처리는 보류하고 크기가 어느정도 작아진 경우 크기는 더 작아지지 않는데 위치가 변하는 문제가 있다. 버그처럼 보이므로 크기가 어느정도 작아진 이후 위치가 고정되도록 처리를 추가한다. 처리를 위해 oldWidth 와 oldHeight를 추가하고 min 값과 max 값을 비교해서 초과되는 만큼 위치에 +, -를 해 줬다. int oldWidth = rc.Right - rc.Left; int oldHeight = rc.Bottom - rc.Top; rc.Left += Ma..