Supervised Learning : 모든 training sample이 label되어 있고 결과 값도 이에 연관된다. Unsupervised Learning : training sample에 label이 없다. 데이터의 분산과 패턴에 따라서 결과가 정의된다. Reinforcement Learning : 어떤 Action에 대한 Reward를 달리하면서 목표한 결과에 다가서게 하는 방법 기계학습의 주요 구성요소 Machine Learning Models 반죽과 같다. 다양한 목적에 따라서 사용될 수 있는 것이다. 문제를 해결하기 위한 코드 단위의 모듈이다. 예) Linear Regression Model Machine Learning Training model과 data를 이용해서 trained mod..
AOSP를 이용해서 Android OS 동작에 대한 수정이 필요할 경우 다음과 같이 xml을 수정함으로써 Android Platform의 작동 방식을 변경할 수 있다. 몇 가지 중요해 보이는 내용만 남기고자 한다. 단말의 Hardware 사양 및 시스템 앱의 작동 방식을 결정 (config.xml) https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/config.xml name 내용 config_sf_slowBlur surface flinger에서 blur를 쓸 것인가? (퍼포먼스 이슈) config_useVolumeKeySounds 볼륨키 처리 여부 (키 없으면 불필요) config_activityD..
The Skyline Problem 문제 내용 평평한 선위에 직사각형으로 구성된 네모로 만들어진 그룹이 있다. 이것을 [start point,end point, height]의 집합으로 표현한다고 했을 때, 겹친곳을 제외하고 외곽만 선으로 이었을 때, 수평선의 시작점과 height가 0인 마지막 포인트 하나로 구성된 Points 그룹을 만드시오. 접근 방법 우선 문제를 이해하는게 중요하다. 상기와 같은 문제가 주어졌다고 생각해 보자. 답은 outline의 수평선이 시작하는 포인트가 답이 된다. x와 높이 y 즉 height를 좌표로 한다고 했을 때, (2,10)은 수평선을 시작하는 점이다. (3,15)는 수평선을 시작하는 점이다. 여기서 (5,12) 겹쳐진 네모 안에 있기 때문에 불필요한 포인트이다. (..
Max Points on a Line 문제 내용 어떤 1차 방정식의 선분을 그었을 때 해당 선을 지나가는 가능 많은 Points의 갯수를 구하라. 접근 방법 지극히 수학적인 접근이 필요하다. 우선 기본적인 1차 방정식을 생각해 보자. $$ y = ax + b$$ 여기에서 a는 기울기 b는 절편이라고 생각하면 된다. 기울기는 다음과 같이 나타낼 수 있다. y의 변화량을 x의 변화량으로 나눈 값이 된다. $$ slope = (y2 - y1) / (x2 - x1) $$ 이것을 3개의 Point가 한개의 선을 지나가는가? 라는 접근 방법은 아래와 같이 나타낼 수 있다. $$ (y2 - y1) = (x2 - x1) * slope + bias $$ 그런데 위 수식에서 bias는 두점에 대한 상대라고 생각했을 때 b..
사람이 최대 공약수를 구하는 방법은 다음과 같은 계산 방식으로 해결을 한다. 그럼 프로그램 적으로는 어떻게 접근 하는 것이 좋은가? 모든 경우의 수를 계산 한다. 최대공약수는 기본적으로 a와 b를 동시에 나눌 수 있는 가장 큰 수라는 전제가 있다. 그렇기 때문에 a와 b중 작은 수를 기준으로 모든 수를 나누어 보면 된다. function gcd_linear(a, b) { let min = Math.min(a, b); for (let i = min; 0
Reaching Points 문제 내용 (sx,sy)로 시작한 point는 다음과 같이 값을 변화 시킬 수 있다. (sx + sy, sy) (sx, sy + sx) 최종값이 (tx,ty) 가 가능한가? 접근 방법 기본 적인 접근법은 Binary Node를 확장하는 것이다. (sx, sy)가 (1,1)일 경우 sx를 증가 시키거나 sy를 증가시키거나 하는 방법으로 $ 2^n $ 으로 node를 늘려가면서 정답을 찾으면 된다. 그러나 이것은 매우 비효율 적이다. 만약에 tx, ty가 (2,3)이라고 생각해 보자. back ward로 거슬러 올라오는 방식으로 접근을 한다면, 가지 치기가 되게 된다. 이 가지 치기를 할때 한가지 rule만 따르면 된다. 큰곳에서 작은 것을 뺀다. 왜냐면 작은것에서 큰것을 빼면 ..
Longest Increasing Path in a Matrix 문제 내용 Matrix에서 오름차순으로 갈수 있는 최대의 길이를 구하라 접근 방법 음... 오랫만에 쉬운문제라 행복했다. dfs만으로 해결이 된다. Matrix가 M x N 이라고 할때 하나의 cell을 한번만 순환하게 만들면 된다. 예를 들어보면 상기 문제에서 $ (1,0) $에는 4가 들어있다. 4에서 오름차순이 가능한 cell은? 없다. dp로 보면 자기 자신만이 가능함으로 1의 길이를 갖는다. 이 길이는 확정이 된다. 그럼 $ (1,1) $ 은 어떤가? 4로만 오름차순으로 올라갈 수 있다. 하지만 4는 이미 dp의 값이 확정이다. 4로 순회 할 필요 없이 4의 dp 값 1에 자기 자신 1을 더하면 된다. 2는 어떤가? 3으로밖에 갈수..
Count of Smaller Numbers After Self 문제 내용 숫자로 이루어진 Array가 주어지고, 각 숫자의 오른쪽에 위치한 숫자중에 현재의 숫자보다 작은 숫자의 갯수를 맞추는 문제 이다. 접근방법 굉장히 다양한 접근이 가능한 문제이다. 가능하다면 모든 경우의 문제를 푸는 것이 좋다고 생각한다. full search segment tree & binary indexed tree insertion sort merge sort full search 모든 경우의 수를 조회하는 방법이다. 예를 들어 보자. $ [5,2,6,1] $ 이 있다고 생각해 보자. 5보다 작은 우측의 수는 2와 1 두개가 있다. 이것을 알기 위해서는 2,6,1을 한번씩 순회하면 된다. 다음은 2일때다. 2일때는 6과 1 ..
build.gradle 에 dependency 추가 dependencies { implementation 'org.springframework.boot:spring-boot-starter-webflux' implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-mongodb-reactive', version: '2.5.1' compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.20' testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation '..