[C++ / Algorithm] 무한한 평면과 점 사이의 거리 #24
1. 평면의 방정식 평면의 방정식은 3차원 공간에 존재하는 평면을 나타내는 방정식입니다. $_ ax + by + cz + d = 0 _$ 평면의 방정식의 특징은 그라디언트가 법선 방향을 가르킨다는 것입니다. 이 이유는 그라디언트의 정의를 이해하면 그 이유를 쉽게 알 수 있습니다. 그라디언트는 공간에서 값이 커지는 방향을 가르킨다는 특...
1. 평면의 방정식 평면의 방정식은 3차원 공간에 존재하는 평면을 나타내는 방정식입니다. $_ ax + by + cz + d = 0 _$ 평면의 방정식의 특징은 그라디언트가 법선 방향을 가르킨다는 것입니다. 이 이유는 그라디언트의 정의를 이해하면 그 이유를 쉽게 알 수 있습니다. 그라디언트는 공간에서 값이 커지는 방향을 가르킨다는 특...
1. 최대공약수의 직관적 이해 $_ a=2^{2}\times 3^{3}\times 5^{2} _$ $_ b=2\times 3^{2}\times 5^{4} _$ 라고 한다면, 아래 식의 값은 얼마가 될까요? $_ gcd(a,b) _$ 우선, 공약수에 대해서 간단하게 짚고 넘어갑시다. 공약수란, 두 개 이상의 수가 공통적으로 가지는 약수입니다...
1. GLSL이란? GLSL은 OpenGL Shading Language의 약자로 셰이더를 개발할 때 사용하는 언어입니다. 또한, GPU에서 병렬적으로 실행되기 때문에 3D 렌더링 속도를 크게 향상시킬 수 있습니다. GLSL에서는 다양한 내장 함수와 데이터 타입을 지원하기 때문에 수학 연산을 간편하게 할 수 있다는 장점이 있습니다. 2. 활용 분야...
1. 팩토리 패턴이란? Pizza라는 클래스가 있다고 가정해봅시다. class Pizza { public: }; 하지만 피자가게에 가서 그냥 “피자 주세요.” 라고 하지는 않습니다. “페퍼로니 피자 주세요.” 또는 “치즈 피자 주세요.” 와 같이 조금더 구체화된 피자를 말하죠. 이와 같이 피자는 “도우 위에 소스와 토핑 등을 올려 구운...
1. 싱글톤 패턴이란? 싱글톤 패턴은 어떠한 클래스의 인스턴스가 오직 1개만 생성되는 패턴을 의미합니다. 싱글톤 패턴을 다양한 방법으로 구현될 수 있지만, 이번 예시에서는 인스턴스를 얻어올 때 전에 생성된 인스턴스가 있는지 검사하는 방식으로 구현하겠습니다. 2. 싱글톤 구현 #include <stdlib.h> #include <i...
1. 디자인 패턴이란? 디자인 패턴은 소프트웨어 디자인 과정에서 발생하는 문제들을 해결하기 위한 방법들을 모아서 부르는 말입니다. 디자인 패턴을 사용하면 불필요한 코드 또는 복잡한 코드를 없애거나 줄일 수 있습니다. 디자인 패턴을 알고리즘과 자주 혼동하지만 알고리즘은 문제 해결을 위한 순차적 절차라면 디자인 패턴은 코드의 구조와 작성을 더 효율적으로...
1. 선분과 점의 위치 관계 분석 이 문제는 선분 AB와 P의 위치관계를 분석해서 3가지의 예외상황으로 나누어 풀면 쉽습니다. 점 P에서 선분 AB로 수선을 그릴 수 있을 때 점 P에서 선분 AB로 수선을 그릴 수 없으며 점 P가 점 A랑 더 가까울 때 점 P에서 선분 AB로 수선을 그릴 수 없...
1. 트리 1-1. 문제 의찬이는 숫자가 적힌 블록으로 탑 쌓기를 즐긴다. 어느 날 선우는 의찬이가 쌓는 탑에 규칙이 있음을 알게 되었다! 선우가 알아낸 규칙은 다음과 같다. 의찬이가 쌓는 탑은 꼭대기가 1층이고, 1층에는 a개의 블록이 존재한다. 1층의 가장 왼쪽 블록에는 1이 적혀있으며, 블록에 적힌 숫자는 오른쪽으로 갈수록 1씩 증...
1. 트리 1-1. 문제 트리 T는 아래 그림 1과 같은 구조를 가지고 있으며 원은 ‘정점’이라 하고, 정점과 정점을 연결하는 선을 ‘에지’라 한다. 특히 가장 위에 위치한 정점을 ‘루트’라 하는데 오직 하나만 있다. N개의 정점들은 숫자 1부터 N으로 표현하고 루트는 항상 1이다. 두 정점 v와 w를 연결하는 경로는 정점들의 순서리스트 (v0,...
1. 오큰수 1-1. 문제 크기가 N인 수열 A = A1, A2, …, AN이 있다. 수열의 각 원소 Ai에 대해서 오큰수 NGE(i)를 구하려고 한다. Ai의 오큰수는 오른쪽에 있으면서 Ai보다 큰 수 중에서 가장 왼쪽에 있는 수를 의미한다. 그러한 수가 없는 경우에 오큰수는 -1이다. 예를 들어, A = [3, 5, 2, 7]인 경우 NGE(...