이전 포스팅에서 단순한 방법으로 Distinct Value List를 구하는 방법에 대해서 알아보았습니다. 이번에는 보다 빠른 속도로 Distinct Value List를 구하는 방법으로, Hash 탐색을 이용하는 방법입니다. Hash 탐색방법은 이름 에서 알 수 있듯, Hash 알고리즘을 활용합니다. teus-kiwiee.tistory.com/32?category=913862 Hash Hash는 값을 입력받아 해당 값에서 특정 값을 추출하고, 추출한 값을 Index로 하는 Hash Table을 만드는 구조입니다. 이때 Hash Fucntion으로는 다양한 방법이 존재하며, 다양한 값에서 균등한 Hash Code가 teus-kiwiee.tistory.com Hash탐색을 활용 할 경우, Distinct ..
이번 포스팅은 주어진 Data에서 Distinct Value로 구성된 List를 구하는 알고리즘 입니다. 현재 가장 유명한 방법은 Hesh Map을 사용하는 방법이지만, 해당 방법 이전에 Brutal Algorithm 방법으로 구하는 Distinct Value를 구하는 방법에 대해서 알아보겠습니다. 해당 알고리즘은. 1. Random List에서 N번째 원소를 Pick한다 2. N번째 원소가 Distinct List에 있는지 확인한다. 3. 있으면 Pass하고, 없으면 Distinct List에 추가한다. 4. 모든 Random List의 원소를 확인할 때까지 1~3반복 알고리즘이 너무 직관적이라, 특별히 설명이 필요 없어보입니다 ^_^;; 해당 알고리즘은 n개의 Element에 대해서, k번(disti..
지난번 포스팅까지 해서 어떻게 선을 그리는지, 어떻게 색을 구성, 채우는지 확인하였습니다. 이번 포스팅은 이렇게 결정된 도형을 2차원 화면에 Rendering 할 영역을 설정하는 내용입니다. 아래 예시를 보시죠 파란색 삼각형과 초록색 원 모두 계산완료 하였지만, 실제 화면에 보여질 영역은 빨간 사각형 입니다. 이런 빨간영역 만 남길때, 기존에 포스팅했던 기하변환을 사용합니다. 보시는것 처럼, 크기변환 과 점의이동 두가지 기하변환을 순서대로 적용합니다. 1. (X_min, Y_min)을 기준으로 Size를 크기를 2로 바꾸는 크기변환 행렬을 구한다. └1_1. 1을 진행하기 위해서 (X_min, Y_min)을 (0, 0)으로 이동시킨다. 2. (X_min, Y_min)을 (-1,-1) 로 이동시키는 점의 ..
지난번 포스팅으로 컴퓨터에서 어떻게 공간을 채색하는지 알아보았습니다. 이번 포스팅은 이 채색을 무슨 Color로 하는지에 대한 포스팅입니다. 1. Color의 표현 컴퓨터 상에서 한 Pixel마다 Color를 정의할 때 보통 4개의 Element를 이용하며, 대표적으로 1_1. RGB Color Model 현실에서 Red, Green, Blue 3개의 원소를 가지고 표현한 색좌표입니다. 1_2. CMYK Color Model RGB와 반대로 Cyan, Majenta, Yellow 3가지 색상을 이용하며, RGB Color Model의 값에 Not을 취한 결과와 같습니다. 하지만 이때 CMY 에 추가로 K(key)가 있습니다. Grey의 농도를 조절하는 부분이 추가되어 있습니다. 1_3. HSV Color..
지난 포스팅까지 점과 선의 구성, 변환에 대해서 포스팅하였습니다. 그럼 이제 선과 선 사이에 어떻게 색을 채워넣는지 알아보도록 하겠습니다. 다각형이 있다고 할때, 이 다각형에 수평으로 선을 그으면 대략적인 채색의 윤곽이 보이게됩니다. 보면 알 수 있듯, 수평이 아닌 선분에서 다각형을 그리면 위처럼 접점의 회수가 존재합니다. 이때, 주황색은 색이 칠해질 부분이고, 파란색은 색이 칠해지지 않을 부분이 됩니다. 즉, 접점이 짝수인 부분은 비채색, 접점이 홀수인 부분만 채색을 하게됩니다. 아지만 위 방법만 으로는, 아래와 같은 경우의 채색을 결정하지 못합니다. 수평선분 또는 꼭지점과 만날 경우, 처음에 말씀드린 법칙 만으로는 어느 부분에 채색을 해야할지 알기 어렵습니다. 이 문제를 해결하기 위해서 3가지 법칙이..
지난 포스팅에서 동차좌표계를 활용해서 기하변환을 모두 행렬의 곱으로 바꿨습니다. 이제, 이러한 기하변환은 여러번 취하는 복합기하변환에 대해서 알아봅니다. 1. 복합기하변환 한 점을 점의 이동 + 크기변환을 진행한다고 가정합니다. 지난번 포스팅에서 기하변환을 모두 행렬의 곱으로 나타냈기 때문에, 이 변환들 모두 행렬의 곱으로 표현됩니다. 그럼, P1-> P2로 가고, P2->P3로 갈 때 기하변환 Matrix끼리 곱해도 행렬의 형태가 유지되며 최종적으로 P1->P3로 이동한 결과를 얻을 수 있습니다! (이때 행렬 곱의 순서는 바뀌면 안됩니다) 이러한 연산은 회전변환과 점의이동의 복합기하변환에서도 마찬가지입니다. 아래 예시를 보겠습니다. 위 경우 원점이 아닌 특정한 점(x1, y1)을 기준으로 회전할려고 합..
- Total
- Today
- Yesterday
- git
- GDC
- SIMD
- 병렬처리
- 컴퓨터그래픽스
- 알고리즘
- 이분탐색
- stack
- Python
- heap
- 코딩테스트
- Sort알고리즘
- 사칙연산
- hash
- Search알고리즘
- 동적계획법
- 프로그래머스
- 완전탐색 알고리즘
- prime number
- Greedy알고리즘
- 분할정복
- AVX
- 자료구조
- C++
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |