일지
-
JUNGOL...164일지 2021. 11. 30. 14:20
Intermediate_Coder/그래프탐색-DFS/단지번호붙이기 문제 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집들의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력하는 프로그램을 작성하시오. 입력 형식 첫 번째 줄에는 지도의 크기 N(정사각형임으로 가로와 세로의 크기는 같으며 5≤N≤25)이 입력되고, 그 다음 N줄에는 각각 N개의 자료(0혹은 1..
-
알고리즘...88일지 2021. 11. 26. 20:01
KDB 트리 삽입과 삭제) KDB 트리의 삽입 처리는 B 트리와 유사하게 처리가 진행된다. 먼저, 적절한 리프 노드를 찾고 해당 노드에 공간이 있으면 (키, 페이지 번호) 쌍을 삽입하고 종료한다. 해당 노드에 공간이 없는 경우 형제 노드를 확인하여 재분배하고 종료한다. 만약 재분배가 불가능한 경우리프 노드를 분할하고 분할된 말단 노드를 가리킬 새로운 노드를 부모 노드에 삽입한다. 이 때 부모 노드에 공간이 있으면 그대로 종료하고 아니면 부모 노드를 기준으로 새롭게 처리를 진행한다. 특정 노드가 분할되어 부모 노드에 할당됐을 때 공간을 수용할 수 없는 경우 분할된 기준을 부모 노드에 적용하여 두 노드로 분할한다. 삭제의 경우도 기본적으로 B 트리의 처리와 비슷하게 진행되며 병합의 처리가 부모 노드에서도 언..
-
알고리즘...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..
-
유니티 화면 비율 고정 처리...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..
-
유니티 화면 비율 고정 처리...19일지 2021. 11. 17. 23:48
화면 조정 시 위치 바뀌는 버그 수정 시도 이전에 발생한 버그를 수정하기 위해 코드를 이것저것 수정해보고 있었는데, 일단 의심되는 건 WinProc을 교체하려고 했으나 교체되지 않고 기존 것에 추가로 적용이 되는 게 아닐까 하는 생각이 든다. 그래서 변경 전 크기, 위치와 변경 후 크기, 위치가 각각 전달되면서 문제가 되는 게 아닐까 싶다. 관련해서 서브 클래싱에 대한 정보를 찾게 되었는데 내용은 다음과 같다. 창 프로시저 사용 - Win32 apps | Microsoft Docs 창 프로시저 사용 - Win32 apps 이 섹션에서는 창 프로시저와 관련된 다음 작업을 수행하는 방법을 설명합니다. docs.microsoft.com 베이비들의 블로그 (zum.com) 서브클래싱 서브클래싱이란 쉽게 말해 윈..
-
알고리즘...85일지 2021. 11. 17. 20:31
KD 트리의 삽입과 삭제 KD 트리는 검색 과정을 통해 리프 노드에 도달한 경우 왼쪽 혹은 오른쪽 자식으로 새로운 노드를 삽입하면 된다. 삭제의 경우 이진 검색 트리와 달리 자식이 하나인 경우에도 자식이 두 개인 경우와 마찬가지로 처리해 줘야 한다. 이는 단순히 상위 레벨로 노드를 올리게 된다면 사용하는 필드가 달라져 속성이 깨지기 때문이다. 삭제 시 노드가 두 개인 경우, 오른쪽 서브 트리에서 삭제할 노드에 사용된 필드의 값이 가장 작은 노드를 찾아 삭제할 노드와 교환하고 찾은 노드를 삭제한 뒤, 말단 노드가 아닌 경우 삭제 과정을 반복하면 된다. 더보기 참고문헌 한빛아카데미.문병로.(2016.07.24).쉽게 배우는 알고리즘