알고리즘(52)
-
[BOJ_1812 | Math] 사탕
풀이 깔끔한 수학 구현 문제였다. 입력케이스의 개수가 홀수 개여서 복잡하게 머리를 굴리지 않아도 된다. 문제를 해결하는 기본 원리는 다음과 같다.입력으로 들어오는 모든 숫자들을 더한다음 2로 나누면, 1~N까지의 학생들이 가지고 있는모든 사탕의 수가 나오게 된다.(왜냐하면 모든 수를 다 두 번씩 더하기 때문 1+2 2+3 3+1) 거기에 지금 구하고자 하는 학생을 제외한 나머지 학생들의 사탕의 개수들의 합을 빼주면지금 구하고자 하는 학생의 사탕의 개수가 나오게 된다. 1 = (1+2+3) - (2+3)2 = (1+2+3) - (3+1)3 = (1+2+3) - (1+2) 이 식을 N에 대해 일반화하면 금방 정답을 구할 수 있다. 소스 코드 1234567891011121314151617181920212223..
2019.02.10 -
[BOJ_1629 | Divide & Conquer] 곱셈
풀이 처음에 문제를 접근 할 때에는 그냥 반복문을 n번정도 돌리면서 곱하고, 그 값이 c보다 커지면 한번씩 나누어 나머지를 구해주고 이렇게 계산을 반복하면 되는 것 아닌가? 하고 생각했다. 이렇게 생각하면 굉장히 단순하고 구현또한 어렵지 않았기 때문에 왜 정답률이 30%가 채 안되는지 이해할 수 가 없었지만..Online Judge에 코드를 넣고 돌려본 뒤에 시간초과가 뜨는 걸 확인하고아 O(n)으로 풀면 안되는 문제였구나 라는 생각이 들었다. 정수의 거듭제곱을 구하는 알고리즘은 여러가지가 있다.그 중 가장 단순하고 구현하기 쉬운 알고리즘은 물론 a를 b번 반복하면서 곱해주는 것이지만시간복잡도가 O(n)으로 비교적 오래 걸리는 알고리즘이다. 그래서 나온 것이 바로 Divide & Conquer 방법을 사..
2019.02.09 -
Neural Networks(3) - Cost Function & BackPropagation
*첨부자료의 모든 저작권은 Coursera에 있음을 미리 밝힙니다. Neural Networks(3)- Cost Function & BackPropagation 이번 시간에는 Neural Networks의 Cost Function에 대해 살펴보고 저번 포스팅에서 살펴보았던 Forward Propagation에 이어 error 를 최소화하기 위한 하나의 방법인Back Propagation Algorithm에 대해서 간략하게 살펴보고자 한다. Cost Function의 식은 Logistic Regression의 식과 굉장히 비슷하다. 아니 사실상 동일하다고 봐도 무방하다. 한 가지 차이점은, h(theta) 함수, 즉 가설함수의 개수(Neural Network의 경우 k개, Logistic Regressio..
2019.02.08 -
Multi-Class Classification with Octave
Programming Exercise 3: Multi-class Classification & Neural Networks 이번 프로그래밍 과제에서는 hand-written digit들의 픽셀정보를 저장한 data matrix를 기반으로각 digit들이 0~9 사이의 어떤 수를 나타내는지를 판단하는One vs all Multi-class Classification model을 구현하였다. 두 번째 과제로는 간단한 Layer 3의 Neural Networks를 구현하도록 하였다. 구현해야 하는 파일은 다음과 같았다. ex3.m - Octave/MATLAB script that steps you through part 1 ex3 nn.m - Octave/MATLAB script that steps you t..
2019.02.08 -
[BOJ_1940 | While] 주몽
풀이 반복문의 성질을 잘 이용해서 풀어야 하는 문제이다. 먼저 주어진 고유 번호를 arr 배열에 저장한 후 정렬한다.Java의 Arrays.sort를 이용하면 데이터 크기에 맞게 O(nlogn) 시간복잡도를 가지는 정렬 알고리즘으로Java가 데이터를 잘 정렬해 준다. 정렬해 준 데이터를 while문 안에 넣고 연산을 수행하면 된다.연산 과정은 다음과 같다.start = 0, end = num.of data -1 로 놓고 시작한다. 만약 arr[end]가 m보다 클 경우 end를 1만큼 감소시키고 continue한다.그렇지 않을 경우 i를 start부터 end-1까지 반복하면서 arr[i]+arr[end] == m이 되는 i의 값을 찾는다.값이 없으면 end를 감소시키고 continue, 값이 있으면 co..
2019.02.07 -
Neural Networks(2)
*첨부자료의 모든 저작권은 COURSERA에 있음을 미리 밝힙니다. Neural Networks(2)- Examples and Intuition, Multi-Class classification 이번 시간에는 Abstract 하게 살펴보았던 Neural Network의 기본적인 로직의 구현을 통해조금 더 실질적인 인공신경망의 구현을 살펴보고, 또 이를 바탕으로 Output의 결과가 하나가 아닌 Multi-Class Classification모델도 간단하게 살펴보고자 한다. 저번 포스팅에서 간단하게 살펴보았던 인공 신경망의 기본적인 구조이다. 여기서 Input Layer인 Layer 1과 Output Layer인 Layer 3를 제외한 중간의 모든 Layer들은 겉으로 드러나지 않는 Hidden Layer..
2019.02.07