알고리즘
-
Algorithm Note
Dynamic Programming(DP) 알고리즘 - 동적프로그래밍, Python으로 푸는 피보나치
Dynamic Programming 큰 문제를 나누어 작은 문제로 푸는 것 하나의 문제는 단 한 번의 풀이만 한다. Dynamic Programming 과 Recursion(재귀)의 차이점 DP와 재귀는 얼핏보면 '같은 문제가 반복적으로 일어나는 점' 에서 비슷하다고 생각할 수 있다. 하지만, 큰 차이점은 일반적인 재귀를 단순히 사용하면 동일한 작은 문제들이 여러 번 반복 되어 비효율적인 계산될 수 있다는 것이다. 가장 대표적인 예시는 피보나치 함수이다. DP 조건 두 가지 조건을 만족해야 한다. 1. 같은 문제가 반복적으로 발생 2. 최적 부분 구조 동일한 작은 문제들이 반복적으로 일어날 때, 같은 문제는 항상 정답도 같다. 즉, 중복 사용이 가능하다. DP 문제 풀이 방법 모든 작은 문제는 한 번..
-
Algorithm Note
알고리즘 - Greedy (탐욕 알고리즘, 욕심쟁이 알고리즘), 최적해 찾기
Greedy Alogrithm Greedy는 사전적인 의미로 '탐욕스러운', '욕심많은' 이라는 뜻을 가지고 있다. 탐욕 알고리즘 또는 욕심쟁이 알고리즘 라고도 불린다. 미래를 생각하지 않고 선택의 순간마다 당장 눈앞에 보이는 최적의 선택을 하는 기법 각 단계에서 최선의 선택을 한 것이 전체적으로도 최선이길 바라는 알고리즘 그리디 알고리즘 해결 방법 선택 : 현재 상태에서 최적의 해답 선택 적절성 검사 : 선택된 답이 문제의 조건을 만족하는 지 확인 해답 검사 : 원래의 문제가 해결되었는지 검사하고, 해결되지 않았다면 선택 절차로 돌아가 위의 과정을 반복한다. 그리디 알고리즘 조건 그리디 알고리즘을 적용하기 위해서는 2가지 조건을 성립해야 한다. 1. 탐욕적 선택 속성 (Greedy Choice Prop..
-
Algorithm Note
알고리즘 - Stack, Queue (선형 큐, 원형 큐, 알고리즘 코드)
스택 '먼저 들어간 것이 나중에 나오는 자료구조' Last In First Out (LIFO) 구조이다. 스택은 배열과 연결 리스트로 나타낼 수 있다. 스택의 구성 - 상단 (top) : 스택에서 제일 나중에 입력된 데이터의 위치 - 하단 (bottom) : 스택에서 제일 먼저 입력된 데이터의 위치 - 요소 (element) : 스택에 저장되는 데이터 그 자체 - 공백 (empty stack) : 아무런 데이터도 갖고 있지 않은 스택 스택의 연산 push() : 스택에 데이터를 추가한다. pop() : 스택에서 데이터를 삭제한다. is_empty(s) : 스택이 공백상태인지 검사한다. is_full(s) : 스택이 포화상태인지 검사한다. create() : 스택을 생성한다. peek(s) : 요소를 스택..
조회수가 많은 글
-
회고
DO SOPT 33기 YB iOS 합격 후기
내 인생에서 큰 반환점을 준 DO SOPT 활동이 끝났다. 8번의 세미나와 APPJAM을 마치고 푹 쉬다가 이제는 현생으로 돌아오는중이다... ㅋㅋ 우선 SOPT YB를 지원하면서 블로그 도움을 많이 받았기에 지원 과정과 합격 후기를 써보려고 한다. 전체 통합 질문 1. 살면서 가장 깊게 몰입했던 경험에 대해 소개해주시고, 해당 경험에서 가장 어려웠던 문제와 그 해결 과정을 새롭게 깨달은 점을 중심으로 설명해 주세요. (창업 경험과 무관해도 괜찮습니다.) 2. 지원자님이 동료로부터 받았던 긍정적인 피드백과 부정적인 피드백을 하나씩 소개해주시고, 다음 단계로의 성장을 위해 두 가지의 피드백을 어떻게 활용하고 계신지 작성해 주세요. 3. 실천의 관점에서 성공과 실패의 차이점을 작성하고, 둘 중 어떤 것에서 ..
-
iOS
[iOS - UIKit] Keyboard 내려가게 하는 방법 (return 키, 여백 눌렀을 때, 드래그 등)
return 키를 누르면 키보드를 내리는 방법 func textFieldShouldReturn(_ textField: UITextField) -> Bool { if textField == loginView.idTextField { loginView.passwordTextField.becomeFirstResponder() } else { loginView.passwordTextField.resignFirstResponder() } return true} 여백을 누르면 키보드를 내리는 방법1번override func touchesBegan(_ touches: Set, with event: UIEvent?) { view.endEditing(true)} 2번override..
-
🤖 Computer Vision
컴퓨터 비전 영상처리 - 에지 검출 (디지털 영상의 미분, 계단 에지, 램프 에지, 스무딩 기법, 소벨 연산자, 영교차 찾기)
영상처리에서 에지란? 영상의 명암, 컬러, 또는 텍스처와 같은 특성이 급격히 변하는 지점이다. 에지는 '테두리' 라는 뜻을 가지며 물체의 '경계'를 표시해 준다. 매칭에 용이한 선분이나 곡선으로 변환이 가능하다. 에지의 한계 실종된 에지(거짓 부정)와 거짓 에지(거짓 긍정)가 발생한다. 디지털 영상의 미분 1차원 수학에서 변화를 측정하는 기초 이론은 미분이다. 연속 공간에서의 미분은 도함수를 구할 수 있는데, x값이 미세하게 증가했을 때 연속 함수가 어떻게 변화하는지를 측정해준다. 하지만 컴퓨터 비전이 다루는 디지털 영상은 이산 공간에서 정의된다. 따라서 이산 공간에서 도함수를 근사화하는 방법을 고안해야 한다. 위의 f'(x) 식을 보면 마스크[-1][1]로 영상 f를 컨볼루션 하는 것과 같다. 3-2의..
-
🤖 Computer Vision
영상처리 - 이진화와 오츄 알고리즘 (Otsu Algorithm)
이진화 명암 영상을 흑과 백으로만 이루어진 이진 영상으로 반환한다. T보다 크거나 같으면 1(백), 작으면 0(흑)으로 해서 흑백영상을 만든다. (이진화를 시킨다) 임계값 방법 두 봉우리 사이의 계곡을 임계값 T로 설정한다. 자연 영상에서는 계곡 지점의 결정이 어렵다. 위의 (b)그림은 임계값을 50으로 설정하여 구한 이진 영상이다. 근데 임계값 T는 어떻게 구해야 될까? 이론적으로 봤을 때 이진화에 따른 분류 에러를 최소화시켜주는 임계값을 optimal threshold라고 부른다. T가 optimal threshold 인지 아닌지를 알려면 어떤 픽셀이 물체이고, 어떤 픽셀이 배경인지를 알고 있어야 하는데, 이걸 미리 알고 있었다면 이미 최적의 이진화가 끝난 상태이므로 T를 구할 필요가 없다. 실제 입..
-
🤖 Computer Vision
컴퓨터 비전 영상처리 - 오츄 알고리즘(Otsu Algorithm) 실습 코드 C언어, C++
이론 2023.07.25 - [🤖 Computer Vision] - 영상처리 - 이진화와 오츄 알고리즘 (Otsu Algorithm) 영상처리 - 이진화와 오츄 알고리즘 (Otsu Algorithm) 이진화 명암 영상을 흑과 백으로만 이루어진 이진 영상으로 반환한다. T보다 크거나 같으면 1(백), 작으면 0(흑)으로 해서 흑백영상을 만든다. (이진화를 시킨다) 임계값 방법 두 봉우리 사이의 계 mcrkgus.tistory.com 오츄 알고리즘 (Otsu Alhorithm) C언어 실습 코드 전체 코드 : https://github.com/mcrkgus/Computer-Vision/blob/main/otsu.c #include #include #pragma warning(disable:4996) int ..