일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 수학
- 문제풀이
- 우분투
- Doubly Connected Edge List
- 알고리즘
- dp
- 유니티
- uclidean algorithm
- 벡터
- 외적
- Graham Scan
- 분할축 이론
- Vector
- Expanding Polytope Algorithm
- c#
- ubuntu
- C
- GJK
- SOH
- 백준
- 내적
- 충돌 알고리즘
- 리눅스
- 보로노이다이어그램
- PS
- 다이나믹 프로그래밍
- Unity
- C++
- AABB
- linux
- Today
- Total
목록분류 전체보기 (62)
마이 플밍 블로그
벡터의 스칼라 구하기 (정규화 normalize) 벡터의 방향은 유지하면서 길이만 1로 만들기 $$ \dot{v} = (\frac{v_{x}}{\left \| v \right \|},\frac{v_{y}}{\left \| v \right \|},\frac{v_{z}}{\left \| v \right \|}) $$ v를 정규화 하려면 각각의 성분을 길이로 나누어 주기만 하면 됨 길이를 구하는 공식은 피타고라스 정리를 이용하면 되는데 다음과같다 $$v = (1,3,4)$$ $$\left \| v \right \| = \sqrt{1^{2} + 3^{2}+ 4^{2}} = \sqrt{26}$$ 백터 내적 두 벡터를 가지고 한 스칼라 값을 구하는 연산 다음과 같이 정의된다 $$ u \cdot w = \left \..
함수는 사용될 때마다 일정량의 오버헤드를 발생시킨다. CPU가 함께 실행중인 다른 레지스터와 함께 사용 중인 함수의 주소를 저장해야 해서 모든 함수 매개 변수를 생성해야 한다. 할당 된 값을 사용한다면 프로그램이 새 위치로 분기된다. 내부에서 작성 된 코드가 더 빠르다. 함수 호출시 다음과 같은 과정을 거치게 된다. 함수 호출 -> 호출 된 시점의 함수 주소 값 스택에 저장 -> 함수 매개변수 스택에 저장 -> 함수실행 함수 종료 -> 함수 리턴 값을 임시 저장소에 저장 -> 스택에서 호출 시점 주소 값 가져옴 -> 호출 시점으로 복귀 엄청 큰 함수 몇개만 사용한다면 큰 문제는 없지만 작은 함수 여러개를 쓴다면 많은 성능저하가 일어날 것이다. 컴파일러에서는 이런 오버헤드를 줄이기 위해 스스로 코드를 최적..
#include #include #include #include using namespace std; long int A,B; long int minCount = 100000000; void DFS(long int num, bool gup, long int count) { count++; if (gup) { num *= 2; } else { num *= 10; num += 1; } if (num == B) { if (count > A >> B; DFS(A,..
#include #include #include #include using namespace std; int N, C; int k; vector arr; int main() { cin >> N; cin >> k; long int before; long int totalDst = 0; long int point; cin >> point; arr.push_back(point); for (int i = 1; i > point2; totalDst += point2 - arr[i - 1]; arr.push_back(point2); } sort(arr.begin(), arr.end()); int answer = 0; // 공유기간의 거리 최솟 값 int ..
수정 전 #include #include #include using namespace std; int N, M; vector arr; vector keys; int test(int low, int height, int key) { int mid = (low + height) / 2; if (arr[mid] == key) { int index = mid; int count = 1; while (!(index > M; for (int i = 0; i < M; i++) { int key; scanf("%d", &key); keys.push_back(key); } for (int i = 0; i < keys.size(); i++) { printf("%d ", test(0, keys.size(), keys[i])..
#include using namespace std; int mapSize; int map[64][64]; void QuadTree(int x, int y, int line) { if (line == 1) { cout arr[x]; } for (int i = 0;i < mapSize; i++) { map[i][y] = arr[i] - 48; } } QuadTree(0, 0, mapSize); return 0; }
#include #include #include #include #define _CRT_SECURE_NO_WARNINGS using namespace std; void path(int n, char start, char goal) { printf("%c %c\n", start, goal); } void hanoi(int n, char start, char goal, char assist) { if (n == 1) { path(n, start, goal); } else { hanoi(n - 1, start, assist, goal); path(n, start, goal); hanoi(n - 1, assist, goal, start); } } int main() { int n; cin >> n; string..
간혹 프로그램을 작성하다 보면 특정 클래스에 메서드를 추가하고 싶은 경우가 있다. 그게 내가 만든 클래스라면 직접 파일을 열어서 추가하면 되지만 외부 라이브러리를 사용할 시 직접 수정하지 못하게 막아놓은 경우도 있을 것이다. 그럴 경우에 사용하면 되는 것이 확장메서드이다. 확장메서드를 사용할 시 클래스 내부가 아닌 외부에서 메서드를 정의함으로서 기존 형식의 코드변경 없이 외부에서 대상 형식에 메서드를 추가할 수 있다. 확장메서드 만들기 확장메서드는 static클래스 안에서 static 메서드로 정의된다. public static class ExtensionMethod { public static void TestExtensionMethod1(this string a) { Console.WriteLine(..