본문 바로가기

전체

(156)
[백준/C++] 1182번: 부분수열의 합 (DFS) 주의점 1) 연속된 수의 합을 찾는 것이 아니다. ex) N=4, sum=0, arr=[100, 100, 100, -100]일 때, 연속된 수의 합이라면 답이 1개이다. 하지만 (100,-100)조합이 3번 가능하므로 답이 3개이다. 주의점 2) 부분집합의 합이 아니니 중복이 포함된다. ex) N=4, sum=1, arr=[1, -1, 1, 2]일 때, 부분집합의 합이라면 [1], [-1, 2], [1, -1, 1]로 답이 2개이다. 하지만 첫번째 1과 세번째 1은 다른 1로 처리해야한다. 그래서 [1], [1], [-1, 2], [1, -1, 1]로 답이 4개이다. #include #include #include using namespace std; int N, sum; vector arr; int c..
더 깊은 네트워크를 위한 Activation function(활성화 함수) Activation function의 필요성 앞선 포스팅을 통해 perceptron은 fully-connected layer(=dense layer=linear layer)와 sigmoid로 이루어져 있다는 것을 알고있다. perceptron을 아주 많이 쌓게 되면 그것을 DNN(Deep Neural Network)이라고 부른다. 만약 DNN을 이루고 있는 요소 중 sigmoid 함수가 없다면 어떨까? fully-connected layer를 100개를 쌓아도 10000개를 쌓아도 사실 한 층을 쌓은 것과 다를 바 없게 된다. 어차피 선형함수 하나로 표현할 수 있기 때문이다. 그러므로 층을 깊게 쌓는 것이 의미를 갖기 위해서는 sigmoid와 같은 non-linear한 activation function..
Gradient descent algorithm(경사하강법)과 back propagation 이 포스팅은 sung kim 교수님 강의 의 자료를 활용했습니다. Gradient descent algorithm review Loss function(=cost function=objective function)은 실제 값과 추정 값의 차이를 나타내는 함수. 즉, 얼마나 틀렸냐?를 나타낸다. loss function을 최소화 하는 것이 우리의 목적이다. gradient descent algorithm(경사 하강법)은 loss를 최소화 하는 weight를 찾는 방법중 하나이다. 그럼 어떻게 loss를 최소화 하냐? 현재 위치에서 gradient(기울기)가 가장 급격한 방향으로 조금씩 이동하며 최소값으로 도달한다. 즉, 특정 weight에 대한 편미분을 통해 각각의 weight가 loss에 얼마나 영향을 ..
Perceptron(퍼셉트론)과 MLP(Multi-Layer Perceptron) Artificial Neural Network (인공신경망) Artificial Neural network(ANN, 인공신경망)은 상호 연결되어있는 뉴런들의 복잡한 webs로 구성되어있는 생물학적인 학습시스템에서 일부분 영감을 얻었다고 한다. 인간의 뇌는 대략 1011 개의 뉴런(각각 평균적으로 104의 connection을 가진다)의 밀도있게 연결된 네트워크를 가진다고 추정된다. 그리고 그렇게 상호 연결된 뉴런은 시냅스를 통해 신경전달물질을 분비해서 신호를 전달하거나/전달하지 않거나 행동을 취한다. ​ 다음 뉴런을 activation시키기 위해 뉴런에서는 어떻게 결정을 내리는 것일까? 그 rule을 design하는 neural network를 만드려는 여러 시도들이 있고 앞으로의 포스팅에서 차근히 살펴..
대학원 면접날을 떠올리며 큰 포부를 안고 제작년 이맘때 쯔음 대학원 입학면접을 보러 왔던 것 같다. 참 알 수 없는 운명처럼 이 분야에 끌려서 여기에 있다. 졸업이 코 앞으로 다가왔는지 날이 차다. 또 운명은 나를 어디로 데려갈까..
명령 프롬프트(cmd)에서 특정 확장자 파일리스트 txt 파일로 저장하기 dir /s/b *.wav >tr.txt cmd창을 켜서 다음과 같이 한줄만 입력하면 순식간에 다 구해준다. Python 안써도 됌ㅎㅎ /s : 하위폴더에 있는 pcm파일도 다 찾아준다. /b: 최소포맷을 사용한다. *.wav : wav 확장자만 다 찾아준다.
[프로그래머스/C++] 124 나라의 숫자(진법 변환) 3진법인데 사용하는 숫자가 1,2,4 #include #include #include using namespace std; string solution(int n) { char nums[3] = {'4','1','2'}; string answer = ""; while(n){ answer = nums[n%3] + answer; n = n/3 - (n%3==0); } return answer; } DFS로 풀었는데 지저분 #include #include #include using namespace std; vector v; void dfs(int n){ if(n==1){ v.push_back(1); return; } else if(n==2){ v.push_back(2); return; } else if(n=..
[프로그래머스/C++] 징검다리 건너기(이분탐색) 이 문제의 경우 효율성 점수가 있는데 이 말인 즉슨 이분탐색을 떠올려야 한다는 뜻이다. 하지만 나는 떠올리지 못했다...(눈물) 여튼, 쉽게 풀려고하면 '돌다리 건널 수 있는지 판단하기 -> 돌다리 건너기(숫자줄이기)'로 풀 수 있지만 시간이 너무 오래걸린다. 그러므로 시간을 줄이기 위해 돌맹이가 가질 수 있는 숫자가 최대로 건널 수 있는 사람의 수라는 것을 생각하고 이분탐색으로 풀수 있다. 1) 조건을 정한다. 2) 이분탐색한다. 1) 조건: "임의의 숫자를 뺐을 때 0보다 작은 돌맹이가 연속해서 K개 있는가?" 2) 이거 기준으로 건널 수 있는 사람의 수를 이분탐색을 진행하면 된다. #include #include #include using namespace std; bool binarySearch(..