알고리즘
-
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) : 요소를 스택..
조회수가 많은 글
-
🤖 Computer Vision
영상처리 - 이진화와 오츄 알고리즘 (Otsu Algorithm)
이진화 명암 영상을 흑과 백으로만 이루어진 이진 영상으로 반환한다. T보다 크거나 같으면 1(백), 작으면 0(흑)으로 해서 흑백영상을 만든다. (이진화를 시킨다) 임계값 방법 두 봉우리 사이의 계곡을 임계값 T로 설정한다. 자연 영상에서는 계곡 지점의 결정이 어렵다. 위의 (b)그림은 임계값을 50으로 설정하여 구한 이진 영상이다. 근데 임계값 T는 어떻게 구해야 될까? 이론적으로 봤을 때 이진화에 따른 분류 에러를 최소화시켜주는 임계값을 optimal threshold라고 부른다. T가 optimal threshold 인지 아닌지를 알려면 어떤 픽셀이 물체이고, 어떤 픽셀이 배경인지를 알고 있어야 하는데, 이걸 미리 알고 있었다면 이미 최적의 이진화가 끝난 상태이므로 T를 구할 필요가 없다. 실제 입..
-
Algorithm Note
알고리즘 - 유전 알고리즘 (Meta Heuristic), 최적해 찾기, 금괴 문제
유전 알고리즘 : Meta Heuristic 계열의 알고리즘 다양한 문제에 대해 경험적으로 솔루션을 제시하는 알고리즘 목적 주어진 문제에 대해서 최적의 솔루션을 찾는 것 (즉, 최적해를 찾는 것) 유전 알고리즘은 알고리즘 특성상 과정과 결과 설명이 굉장히 어려움. 무작위성이 존재함 생물학에서 생물들의 생존 법칙인 적자생존을 기반으로 한 알고리즘 환경에 적합한 개체가 살아남는다. 살아남은 개체는 번식을 한다. 살아남은 개체는 각각 부모가 되어 자손을 생성하는데, 자손은 부와 모의 유전자를 받고 때때로 돌연변이 유전자를 받아 다음 세대를 살아간다. → 위의 세 가지를 반복하면 환경에 적합한 개체들이 살아남고 그 개체들이 좋은 솔루션을 제시한다. 알고리즘에 쓰이는 용어와 표현 - 개체 : individual ..
-
iOS
[iOS - UIKit] ScrollView에서 Button 클릭 시 화면의 최상단, 최하단 이동
오늘은 ScrollView를 사용할 때에 페이지의 내용이 많아 스크롤이 길어지게 되면 어플 안의 버튼을 터치함으로써 최상단 또는 최하단으로 가는 구현 방법을 알아보려고 한다. 구현 방법 ViewController에서 UIScrollViewDelegate 채택 ScrollView를 스크롤하게 되면 x, y축이 변하게 된다. button을 클릭했을때 event를 x, y축이 (0, 0)이 되도록 한다. 코드 class ViewController: UIViewController,UIScrollViewDelegate { // code } 방법 1 - 최상단 이동 @objc func scrollToTop(_ sender: UIButton) { collectionView.scrollToItem(at: IndexPa..
-
iOS
[iOS - UIKit] Compositional Layout - CollectionView
Compositional Layout CollectionView에서 사용한다. 공통적인 cell의 형태보다는 다양한 사이즈의 cell들을 표현할 때 사용하기 좋다. Compositional Layout은 CollectionView Layout 중 하나이다. (FlowLayout 과 비슷하다고 생각하면 된다.) 위와 같이 item, group, section을 지정해서 다양한 형태의 cell들을 쉽게 나타낼 수 있다. Section 안에 Group, Group 안에 Item, Item은 Cell 이라고 생각하면 편하다 기본적인 Compositional Layout 코드 func createBasicListLayout() -> UICollectionViewLayout { let itemSize = NSCol..
-
ADsP
[ADsP 데이터분석 준전문가] - 핵심 내용 요약 정리 (4) - PART 4. 데이터 분석 기획
[데이터 분석 기획 - 1. 분석 과제 정의] 1. 분석 기회 발굴 분석 기회 : 기업의 전사 또는 개별 업무별 의사 결정 포인트에 활용할 수 있는 분석 후보 접근 방식 톱다운 (Top-Down) 방식 : 비즈니스 모델로부터 경쟁력 향상을 도모할 수 있는 분석 기회를 발굴하고 전사 분석 체계 구현을 위한 거버넌스 체계 전반을 다룬다. 보텀업 (Bottom-Up) 방식 : 주제별 분석 기회를 구현 분석 기회 발굴을 위한 3가지 방법 비즈니스 모델 분석을 통한 Top Down 방식 : 기업의 비즈니스 모델을 분석하여 경쟁력 강화를 위한 핵심 분석기회 식별 대상 프로세스 선정, 분석을 통한 Bottom Up Path Finding 방식 : 특정 대산 프로세서를 선정한 후 주제별로 분석기회를 식별 분석 유즈케이..