본문 바로가기

전체 글199

백준 1074 문제 분석 N=1 일때 가정 2*2 크기의 배열이 만들어지고 한 변의 길이의 반은 1(2의 n승 -1) 1번 사각형 : 1번 사각형이 위치한 x좌표(행)과 y좌표(열) 둘 다 half(배열의 한 변의 길이의 반)보다 작은 경우 2번 사각형 : 2번 사각형이 위치한 x좌표(행)이 half보다 작고 y좌표(열)은 half와 같거나 큰 경우 3번 사각형 : 3번 사각형이 위치한 x좌표(행)이 half와 같거나 크고 y좌표(열)은 작은 경우 4번 사각형 : 4번 사각형이 위치한 x좌표(행)과 y좌표(열) 둘 다 half와 같거나 큰 경우 3번 사각형을 구하기 위한 절차를 예시로 들면, int func(int n, int x, int y) { if (n == 0) return 0; int half = 2 * n .. 2024. 2. 26.
에니메이션 Lerp 선형 보간법 의미 두 끝점 a ~ b 사이에 위치한 c를 계산하는 방법 a와 b사이에 t가 위치한 값을 반환하는데 t는 percent의 개념(0~1)이기 때문에 t가 0이면 0(a)~1(b) 사이에서 t가 0인 지점을 계산하는데 t와 a와 동일하므로 a를 반환하고 t가 1이면 b를 반환한다. 즉, t가 a쪽에 가까워질수록 0쪽으로 가까워지는 값(0.4, 0.3 ... 0.001)을 반환하고 b쪽에 가까워질수록 1에 가까워지는 값(0.6, 0.7, 0.9999)을 반환한다. 사용 예시 멈춰있는 애니메이션과 움직이는 애니메이션을 blending 해서 움직이다가 멈추는 경우 또는 멈추다가 움직이는 동작을 자연스럽게 만들어 줌 bool moveToDest = false; float wait_run_ratio =.. 2024. 2. 22.
백준 하노이의 탑(11729) 문제이해 기둥 1에 있는 n번 원판은 3번 기둥으로 이동해야 된다 n번 원판이 이동하기 위해서는 n-1 ~ 1번까지 기둥 2번으로 이동해야 함 n-1개의 원판을 기둥 2번으로 옮긴다. n번 원판을 3번으로 옮긴다. 원판이 n-1개일 때 옮길 수 있으면 n개일 때도 옮길 수 있음 n=2라고 가정하면, 기둥 1에 있는 1(n-1)개의 원판을 기둥 2번으로 옮기고 나머지 하나 남은 원판(n)도 옮길 수 있음 함수 정의 방법 원판 n개를 a에서 b로 이동하는 방법을 출력하는 함수 void func(int a, int b, int n) Base condition 가장 아래에 있는 원판이 이동하려면 n=1 일때 이동 가능하므로 가장 아래에 있는 원판을 이동 후 재귀함수를 호출하지 않는다. n=2 라고 가정을 했을 .. 2024. 2. 22.
Raycast Ray란? 방향(direction)과 원점(origin)을 나타내는 것으로 원점(origin)은 ray가 시작하는 world 세상의 position이다. 방향(direction)은 정규화(normalized)된 Vector3(x, y, z)의 형태의 궤적을 사용한다. Vector를 정규화 하면 Vector의 길이인 magnitude(크기)가 1로 바뀌고 방향만을 가리키는 Vector로 사용된다. (Vector는 크기와 방향을 갖는 화살표) Ray를 만드는 방법 // Creates a Ray from the mouse position Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); 화면에 있는 마우스 위치에서 ray를 만듬 만약 Ray의 orig.. 2024. 2. 19.
DFS(Depth First Search) DFS -> 스택 BFS -> 큐 원소하나를 pop하고 인접한 데이터를 살펴본다는 알고리즘 흐름은 똑같지만 방문 순서에 있어서 큰 차이가 있음 BFS는 주변으로 동시에 퍼져나가기 때문에 시작위치부터 각 목적지까지의 거리를 측정할 수 있지만 DFS는 한 방향으로 막힐 때 까지 직진을 하다가 다시 시작위치로 가서 다른 방향으로 이동하는 방식이기 때문에 인접한 칸이 현재 보는 칸보다 1만큼 더 떨어져있다라는 성질이 BFS에서는 성립하지 않음 DFS와 BFS 둘 다 Flood Fill(이동가능한 구역을 채우는 것) 문제를 해결 할 수 있지만 거리 측정의 경우 BFS로만 해결이 가능하기 때문에 대부분 BFS를 사용해서 문제를 푼다. DFS는 스택을 써서 다차원 배열의 순회를 처리하는 알고리즘이고, 나중에 그래프와.. 2024. 2. 19.
스택의 활용(수식의 괄호 쌍) 1. 문제 해결 방식 여는 괄호와 닫는 괄호의 쌍이 일치해야 된다. 세번째의 경우 쌍은 일치하지만 닫는 괄호과 먼저 나왔기 때문에 닫는 괄호가 먼저 나오는 경우는 배제 괄호의 쌍은 일치하지만 종류가 다르기 때문에 위의 방식으로 풀면 해결하지 못함 가장 안쪽의 괄호부터 붙어있는 여는괄호와 닫는괄호를 지우는 방식으로 해결이 가능한데 배열로 구현할 경우 짝을 찾과 제거하는 과정에서 모든 원소가 한 칸씩 이동하기 때문에 O(n*n)이고, 연결 리스트로 구현할 경우는 제거가 일어나도 주소값만 연결해주면 되기 때문에 O(n)이다. 이 문제를 스택을 이용하면 더 쉽게 풀 수 있는데 맨 마지막에 들어온 괄호가 닫는 괄호인 경우 가장 최근에 들어온 여는 괄호와 종류가 일치하면 그 괄호를 pop하는 방식 이러한 명제를 참.. 2024. 2. 6.