Valid Perfect Square 문제 내용 주어진 number의 값이 $ x^2 $ 형태로 표현될 수 있는 수 인지 확인하시오. 단, sqrt method는 사용하면 안됨 접근 방법 가장 쉬운 방법은 1에서부터 number까지 자기자신을 곱해서 원하는 값이 되는지 확인하면 된다. var isPerfectSquare = function(num) { if(num===1) return true; for(let i = 1; i*i 16 $$ 8의 우측은 답의 대상이 될 수 없다. right의 위치를 8로 옮겨준다. 다시 한번 더 num/2를 진행해 보자. 단, 8역시 답의 대상이 되지 못하다는 것을 알았음으로 right의 위치를 한칸 밑으로 옮겨 준다. center는 number/2이고 이 값은 4 즉 답..
132 Pattern 문제 내용 좌측, 우측, 가운데 순으로 숫자의 크기가 결정되는 값이 있는가를 확인 하는 문제이다. 예를 들자면 [3,1,4,2]의 경우 좌측 값 1 우측 값 2일 경우 가운데 4의 값이 가장 큼으로 132패턴을 만족한다. 접근 방법 모든 수를 순회하는 방법이 가장 쉽다. 예를 들자면 왼쪽을 left 오른쪽을 right라고 했을 때, left와 right를 고정하고 가운데를 순회 시키면 된다. 이렇게 되면 left, right full search로 n^2 그리고 가운데 search 횟수 포함해서 $ O(n^3) $ 이 되게 된다. 이것을 최적화 하기위해서 min 값을 관리할 수 있다. 예를 들자면 index 2 값 4일때 min은 1이라는 것을 알 수 있다. left와 right를 ..
문제 내용 숫자로 구성된 Array가 있다. 해당 Array와 동일한 길이의 0으로 채워진 Array가 있을 때 연속된 Sub Array를 1 증가 시킬 수 있다면, 몇번의 Sub Array 증가 Operation이 필요한가? 접근 방법 [1,2,3,2,1] 이 있을 때 우리는 어떻게 계산을 해야하는가? 전체 Array에 1을 한번 채워서 [1,1,1,1,1]을 만들고 다시 중간에 [0,1,1,1,0]을 채우고, 마지막으로 [0,0,1,0,0]을 채우면된다. 그럼 조금더 복잡한 값을 생각해 보자. [3,1,5,4,2]를 계산해 보자. 가장 하단에서 부터 11111을 채우고, 다시 2단에서 10111을 채워 넣어야 한다. 그런데 연속된 Sub Array를 1 증가시키는 Operation만 가능함으로 100..
Satisfiability of Equality Equations 문제 내용 a==b 또는 b!=c 등의 동일 확인 기호가 주어졌을 경우 해당 수식이 모두 성립하면 true 하나라도 성립하지 않으면 false를 return 해라. 접근 방법 문제를 생각해 보자. ["a==b","b!=a"] a는 b와 같지만 b는 a와 같지 않다. 답은 당연히 false가 된다. 그 이유는 위의 두 식이 성립 하지 않기 때문이다. ["a==b","b==a"] 성립하기 위해서는 위와 같이 정의 되어야 한다. 그럼 조금더 길게 봐보자. ["a==b","b==c","a==c"] 이것은 성립하는가? 그렇다 a,b,c는 모두 동일하다고 볼 수 있다. 만약에 ["a==b","b!=c","a==c"] 이경우는 어떠한가? 성립하지 않는..
Average Selling Price 문제 내용 아래와 같은 Table 2개가 있다. product id의 제품이 팔린 날짜의 price와 팔린 units 갯수를 곱하고 unit 하나당 팔린 가격의 평균을 구하는 query를 작성하라 접근 방법 1. 두개의 Table을 join 한다 select * from Prices a,UnitsSold b where a.product_id = b.product_id select * FROM Prices as a JOIN UnitsSold as b ON a.product_id=b.product_id 위에 두개는 동일한 inner join이다. 2. purchase_date가 start_date와 end_date 사이에 있는 경우만 추출한다. select * from..
앞서 Neural Network 의 선형적 계산 방식을 Neural Network로 보자면, 다음과 같은 모습으로 생각할 수 있다. weight가 각각 2와 3의 그래프가 있고 bias가 -2라고 하면 이런 형태의 그래프를 그릴수 있게 된다. 만약에 한개의 그래프를 더 그려 보면 어떨까? 이런 모습의 그래프를 그릴 수 있다. 이 2가지를 합치면 아래와 같은 모습이 가능하다. 두번째 Layer가 추가 된 것을 볼 수 있다. 즉 2개의 방정식을 하나로 합치는 또다른 방정식을 만든 것이다. 이것 역서 각각 weight를 줄수 있게 된다. w1에 0.5를 w2에 2 그리고 bias -1을 추가 한것 을 확인 할 수있다. 이 Network를 간단하게 그리면 다음과 같게 된다. 이것을 Matrix로 표현 하면 다음..
경사 하강법에 대해서 알아 보고자 한다. 기본 적인 Error Function의 구조는 아래 링크와 같다. 2021.07.17 - [AI] - Error Function $$ ErrorFunction() = - \frac{1}{n} \sum_{i=1}^n y_i*ln(\sigma(Wx_i + b)) + (1-y_i)*ln(1-\sigma(Wx_i + b)) $$ 이것을 3차원의 형태로 그려보면 아래와 같이 표현 할 수 있다. 아래 E 또는 Error 가 Error Function의 계산 결과 이다. 즉, w1의 변화량은 Error function의 결과 값에 어느 정도의 변화를 만들어 내는가? w2의 변화량은 Error function의 결과값에 어떤 변화를 만들어 내는가? 이것을 표현한 내용이라고 생각..
2021.07.17 - [AI] - Maximizing Probabilities, Cross Entropy 앞선 글에서 Cross Entropy를 어떻게 구하는 지 알아 보았다. 이를 통해서 Error Function을 구하고자 한다. $$ CrossEntropy() = - \sum_{i=1}^n y_i*ln(p_i) + (1-y_i)*ln(1-p_i) $$ Cross Entropy를 최소화 하는 것이 좋은 모델이라고 앞서 말을 했다. 최소화된 Cross Entropy를 sum한 갯수로 나누어 평균을 만들어 주면 우리는 이것을 Error Function이라고 부른다. 역시 이것도 최소화 하는 것을 목표로 한다. $$ ErrorFunction() = - \frac{1}{n} \sum_{i=1}^n y_i*..
어떤 값의 분류가 잘 되어있을 확률을 나타낸다. 예를 들자면 아래와 같은 그래프가 있다고 보자. 분리된 선을 기준으로 아래쪽을 파란영역 위 쪽을 붉은 영역이라고 보면 아래는 2개의 Points가 있고 상단에는 3개의 Points가 있다. 이 영역을 다음과 같이 확률로 계산이 가능하다. 우선 하단 파란영역을 보자. 위에 1번 point가 파랑일 확률은? 0.2라고 생각하고, 2번 Point가 파랑일 확률은 0.8로 높을 것이다. 마찬가지로 상단의 3개 points도 각각 0.9, 0.8, 0.1 이라고 생각해 보자. 이 값들을 모두 곱한 값은 아래와 같게 된다. $$ 0.2 * 0.8 * 0.9 * 0.8 * 0.1 = 0.01152 $$ 만약에 모든 포인트가 잘 분류 되었다고 생각해 보자. 상단 poin..