분류 전체보기

문제 설명이번 가을학기에 '문제 해결' 강의를 신청한 학생들은 텀 프로젝트를 수행해야 한다. 프로젝트 팀원 수에는 제한이 없다. 심지어 모든 학생들이 동일한 팀의 팀원인 경우와 같이 한 팀만 있을 수도 있다. 프로젝트 팀을 구성하기 위해, 모든 학생들은 프로젝트를 함께하고 싶은 학생을 선택해야 한다. (단, 단 한 명만 선택할 수 있다.) 혼자 하고 싶어하는 학생은 자기 자신을 선택하는 것도 가능하다.학생들이(s1, s2, ..., sr)이라 할 때, r=1이고 s1이 s1을 선택하는 경우나, s1이 s2를 선택하고, s2가 s3를 선택하고,..., sr-1이 sr을 선택하고, sr이 s1을 선택하는 경우에만 한 팀이 될 수 있다.예를 들어, 한 반에 7명의 학생이 있다고 하자. 학생들을 1번부터 7번으..
문제 설명수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다.7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수이고, 7도 소수이다. 즉, 왼쪽부터 1자리, 2자리, 3자리, 4자리 수 모두 소수이다! 수빈이는 이런 숫자를 신기한 소수라고 이름 붙였다.수빈이는 N자리의 숫자 중에서 어떤 수들이 신기한 소수인지 궁금해졌다. N이 주어졌을 때, 수빈이를 위해 N자리 신기한 소수를 모두 찾아보자.https://www.acmicpc.net/problem/2023 제한 사항 풀이문제를 요약하면, N자리 수중 왼쪽부터 1자리, 2자리, ... N자리까지 모두 소수인 수를 구하는 것이다. 소수 판정 알..
· Game/Unity
RoomGenerator랜덤한 그래프를 생성하는 로직을 구현해야 하는 상황이다.간단한 이론과 알고리즘이 있을 거라 생각했지만 그리 만만하지 않았다...여러 이론과 방법들을 분석하며 실제로 구현해 보자. 보로노이 + 들로네 삼각 분할보로노이는 평면을 분할하는 방법중 하나이다.평면의 두 점을 연결하고 그에 수직하는 선분으로 평면을 나누어 나간다.그러면 왼쪽 사진과 같이 평면이 자연스럽게 나눠진다.이는 CG에서 땅을 부수거나 벽이 부서지는 등의 효과를 만들 때 많이 사용된다.자연스러움이 있기 때문인 듯 하다.들로네 삼각 분할은 점들을 연결하는 삼각형을 만들 때, 최대한 정삼각형에 가깝게 만드는 방식으로 분할하는 것이다.그러기 위해서, 세 점으로 이루어진 삼각형의 외접원안에 다른 점이 없도록 해야 한다...
문제 설명오늘은 신승원의 생일이다.박승원은 생일을 맞아 신승원에게 인천국제공항을 선물로 줬다.공항에는 G개의 게이트가 있으며 각각은 1에서 G까지의 번호를 가지고 있다.공항에는 P개의 비행기가 순서대로 도착할 예정이며, 당신은 i번째 비행기를 1번부터 gi (1 ≤ gi ≤ G) 번째 게이트중 하나에 영구적으로 도킹하려 한다. 비행기가 어느 게이트에도 도킹할 수 없다면 공항이 폐쇄되고, 이후 어떤 비행기도 도착할 수 없다.신승원은 가장 많은 비행기를 공항에 도킹시켜서 박승원을 행복하게 하고 싶어한다. 승원이는 비행기를 최대 몇 대 도킹시킬 수 있는가?https://www.acmicpc.net/problem/10775 제한 사항 풀이문제를 요약하면, 1~g사이 게이트에만 도킹할 수 있는 ..
· Game/Unity
ThirdPerson Character Control새로운 프로젝트 스펙이 3인칭에 액션이 중요한 프로젝트라 3인칭 튜토리얼에서 이동, 카메라 제어 등을 분석해 보자.좋은 방법이 있으면 가져다 써야겠다.. ㅎ     입력 처리입력처리는 따로 컴포넌트로 분리하여 처리하는 듯하다.PlayerInput을 이용하여 입력을 처리한다.해당 프로젝트에서는 Send Message 형식으로 입력을 처리했다.#if ENABLE_INPUT_SYSTEM public void OnMove(InputValue value) { MoveInput(value.Get()); } public void OnLook(InputValue value) { if(cursorInputForLook..
문제 설명방향 없는 그래프가 주어졌을 때, 연결 요소 (Connected Component)의 개수를 구하는 프로그램을 작성하시오.https://www.acmicpc.net/problem/11724      제한 사항      풀이문제를 요약하면, 방향이 없는 그래프 간선 정보가 주어졌을 때 컴포넌트의 개수를 구하는 것이다. 해당 문제는 Bfs, Dfs 로도 충분히 풀 수 있다.하지만, 연결 관계만 판정하면 되기 때문에 유니온 파인드를 이용했다. int FindRoot(int x){ if (root[x] == x) return x; return root[x] = FindRoot(root[x]);}void Union(int a, int b){ a = FindRoot(a); b = Fi..
· Game/Unity
NavMesh & AgentAI를 구현할 때 흔히 사용되는 길 찾기 기능을 편리하게 구현할 수 있게 해주는 Unity 패키지이다.설치해 주자. 설치를 완료했다면 AI가 목표지점으로 이동하는 기능을 만들어 보자.이동 가능한 영역을 지정하기 위해 'NavMesh Surface"를 씬에 배치해 보자.인스펙터를 보면 Nav에 대한 설정을 확인할 수 있다.그림에서 볼 수 있듯이 높이와 경사 등 설정을 확인할 수 있다.설정 변경도 가능하다.이를 확인하기 위해 Surface를 Bake 하여 확인해 보자.하늘색으로 표시된 영역이 AI가 움직일 수 있는 영역이다.이제, AI를 담당할 객체에 'NavMesh Agent'를 달아주자.속도, 가속, 도달 거리 등 설정이 가능하다.이 컴포넌트를 통해 목표지점으로 이동시켜 보자...
문제 설명도시에는 N개의 빌딩이 있다.빌딩 관리인들은 매우 성실 하기 때문에, 다른 빌딩의 옥상 정원을 벤치마킹 하고 싶어한다.i번째 빌딩의 키가 hi이고, 모든 빌딩은 일렬로 서 있고 오른쪽으로만 볼 수 있다.i번째 빌딩 관리인이 볼 수 있는 다른 빌딩의 옥상 정원은 i+1, i+2, .... , N이다.그런데 자신이 위치한 빌딩보다 높거나 같은 빌딩이 있으면 그 다음에 있는 모든 빌딩의 옥상은 보지 못한다.예) N=6, H = {10, 3, 7, 4, 12, 2}인 경우 = = = = - = = = = -> 관리인이 보는 방향 = - = = = = = = = = = 10 3 7 4 12 ..
문제 설명트럭을 타고 이동하던 상근이는 경찰의 검문을 받게 되었다. 경찰은 상근이가 운반하던 화물을 하나하나 모두 확인할 것이기 때문에, 검문하는데 엄청나게 오랜 시간이 걸린다.상근이는 시간을 때우기 위해서 수학 게임을 하기로 했다.먼저 근처에 보이는 숫자 N개를 종이에 적는다. 그 다음, 종이에 적은 수를 M으로 나누었을 때, 나머지가 모두 같게 되는 M을 모두 찾으려고 한다. M은 1보다 커야 한다.N개의 수가 주어졌을 때, 가능한 M을 모두 찾는 프로그램을 작성하시오.https://www.acmicpc.net/problem/2981      제한 사항      풀이문제를 요약하면, N개의 수가 주어지고 이를 M으로 나눌 때 나머지가 모두 같아지는 M을 전부 구하는 것이다. 문제는 간단하지만 수학적인..
· Game/Unity
MNIST Sentis 분석 - MNIST (1)이전 글에 이어서 MNIST를 분석해 보자.이번 포스트에서는 그려진 텍스처를 MNIST 엔진에 전달하여 글자를 인식하고 결과를 활용하는 법을 분석할 것이다.     MNIST 엔진 사용사용자가 그린 그림(?)은 drawableTexture에 데이터로 저장되어 있다.이를 MNIST엔진에 전달하여 데이터를 받아와야 한다.이 흐름은 Infer에서 담당한다.void Infer(){ var probabilityAndIndex = mnist.GetMostLikelyDigitProbability(drawableTexture); probability = probabilityAndIndex.Item1; predictedNumber = probabilityA..