일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MinHeap
- opencv
- 딥러닝
- DP
- 그래프 이론
- 인공지능
- 자료구조
- SIFT
- BFS
- 강화학습
- AlexNet
- dfs
- TD
- image processing
- classification
- dynamic programming
- Reinforcement Learning
- canny edge detection
- 백준
- sklearn
- MySQL
- machine learning
- 머신러닝
- IN
- C++
- Mask Processing
- exists
- edge detection
- clustering
- Python
- Today
- Total
목록분류 전체보기 (118)
JINWOOJUNG
본 영상 처리 개념과 기법들에 대한 공부를 진행하면서 배운 내용들을 중심으로 정리한 포스팅입니다. 책은 Computer Vision: Algorithms and Applications를 기반으로 공부하였습니다. 또한, 인하대학교 박인규 교수님의 디지털 영상 처리 과목을 기반으로 제작된 포스팅입니다. Image Processing 영상 처리를 위한 Image Processing은 아래의 Step으로 구분된다. Image Digitization 연속적인 밝기 값을 픽셀 공간에서의 discrete(별개의)한 값으로 변환하는 과정 즉, 이미지를 티지털화 하는 과정이다. Sampling - spatial discretization 말 그대로 샘플링 과정이다. 특정한 픽셀공간(단위)로 구분하여, 특정 공간에 다수의..
접근법 직접 해 보는 것이 DP문제에서 규칙을 찾는 가장 쉬운 방법인 것 같다. 1 표현 1 2 표현 1+1 2 3 표현 1+1+1 1+2 2+1 3 1,2,3은 각각 1,2,4가지로 표현 가능하다. 4를 1,2,3의 합으로 나타내보자. 1+1+1+1 1+1+2 1+2+1 1+3 2+2 2+1+1 3+1 총 7가지인데, 처음이 1일 때 나머지 3을 나타낼 수 있는 가지수는 위에서 구한 4가지, 처음이 2일 때 나머지 2를 나타낼 수 있는 가지수는 2가지 그리고 처음이 1이면 1가지 이다. 따라서 DP[4] = DP[4-1] + DP[4-2] + DP[4-3] 으로 표현 가능하다. 이제 구현해보자. 정답 #include #include using namespace std; int32_t DP[12]; in..
접근법 점화식을 이끌어 내야 하는 중요한 문제이다. 단순히 3으로 나눠지고 2로 나눠진다고 해서 해당 값으로 나누는 연산을 진행 시 최소값을 찾을 수 없게 된다. 이러한 DP문제는 직접 규칙을 찾아보는 것이 가장 중요하다. 연산이 가능한 것을 고려하였을 때 2와 3은 1번의 연산으로 1로 만들 수 있다. 이는 1일 때는 1로 만드는데 0번의 연산이 걸리는 점을 고려하고 넘어가자. 4는 2로 나누어 떨어지기에 2로 나눈 값인 2는 1번의 연산이 더 필요하다. 또한, 1을 먼저 빼고 3으로 나누어도 동일하게 1로 만들 수 있다. 5는 2와 3 모두 나누어 떨어지지 않는다. 따라서 1을 뺀 후 4는 2가지 방법으로 총 2번의 연산을 통해 1로 만들 수 있다. 6은 2와 3으로 모두 나누어 떨어진다. 2로 나누..
접근법 Dynamic Programming의 가장 쉬운 문제이다. 직관적인 접근이 가능한데, 우리가 원하는 것은 3a+5b = Inupt을 만족하는 a,b에 대하여 a+b가 최소가 되는 경우를 찾고싶은 것이다. 또한, 만들 수 없는 조합일 때는 결과가 -1이야 하는것을 명심하면 된다. 단순히 a 혹은 b 만으로 Input을 나타낼 수 있는 경우도 고려해야 하기 때문에 2중 for 문에서 해당 조건만 고려하면 쉽게 접근 가능하다. 또한, 3a+5b = Input을 만족하는 a,b에 대해서 Result를 처음에 -1로 설정하고 -1인 경우는 그냥 a+b를 Result로, -1이 아닌 경우 기존 Result와 a+b 중 작은 값을 Result로 설정하면 된다. 정답 #include #include using ..
접근법 이차원 배열(벡터)에서 index를 다루고 놀아야 하는 중요한 문제이다. 문제를 보면 삼각형 A와 B중 하나만 회전, 반전 시키면서 B와 비교하면 찾을 수 있다고 생각이 들 것이다. 따라서 가능한 경우의 수를 해당 Index의 변화를 고려하여 접근한다면 조금 수월하게 접근할 수 있다. 먼저 각 삼각형의 원소들을 받아오기 위해서 부터 이중 for문이 요구된다. 첫번째 줄엔 1개, 2번째 줄엔 2개 등 각 줄에 맞춰서 받아와야 하는 원소가 증가한다. 따라서 첫번째 for문의 index를 s32_I라 하며고 두번째 index를 s32_J라 하면 한 삼각형의 줄의 개수를 s32_Cnt로 받아온 후 s32_I는 0부터 s32_Cnt보다 작을때 까지, s32_J는 s32_I보다 같거나 작을 때 까지 반복해서..
접근법 Sudo Code 기반으로 작성하면 쉽게 해결 가능하다. sort()를 이용해서 정렬을 통해 정점 번호를 오름차순으로 방문 하였지만, 추후 다른 정렬 기법 기반으로 정렬을 구현할 필요는 보인다. 정답 #include #include #include #include using namespace std; vector ars32_Graph[100001]; bool arb_Visited[100001] = { false }; int32_t ars32_Result[100001]; void bfs(int32_t s32_R); int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int32_t s32_N, s32_M, s32_..
접근법 각 사람이 돈을 인출하는데 필요한 시간을 최소화 하기 위해서는 각 사람이 소요되는 시간을 기준으로 오름차순으로 정렬한 후 각 사람이 필요한 시간의 합을 더하면 된다. 이를 위해선 vector나 sort 함수를 쓰는게 좋으나, 직접 Buble Sort를 구현하고 전체 소요 시간을 계산한다. 정답 #include using namespace std; int32_t ars32_Time[1001]; void BubbleSort(int32_t s32_Num) { int32_t s32_I, s32_J; for (s32_I = 0; s32_I < s32_Num - 1; s32_I++) { for (s32_J = 0; s32_J < s32_Num - 1; s32_J++) { if (ars32_Time[s32_J..
Intro 앞으로 모든 백준 문제는 C++로 해결하고자 한다. 코테를 위해서는 Python이 더 편하지만, 실제 실력을 더 향상시킬 수 있는 것은 C++이기 때문에 코테 준비는 나중에 하기로 했다. 또한, 이번에 자율주행 경진대회를 준비하면서 코드 통합을 진행 하였는데 변수명을 선언하는 것이 전부 다 달라서 애먹었다. 앞으로는 박사님이 정해주신 틀 안에서 타인이 봐도 알아볼 수 있도록 변수명을 통합할 것이다. 접근법 비행기 종류는 vector로 저장하면 된다. a,b쌍은 a,b를 왕복하는 비행기가 있음을 의미하기에 vector 배열의 a와 b index에 모두 저장해야 한다. 모든 국가를 여행하기 위해서 각 국가를 방문했음을 확인하기 위한 bool 형 array가 요구된다. 또한 저장한 비행기 종류를 기..