전체 글 228

[BFS] BOJ 1926 그림

https://www.acmicpc.net/problem/1926 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로�� www.acmicpc.net 문제 해결 알고리즘 1. 배열에 방문 하지 않았고, 배열 값이 1인 배열들을 탐색한다(bfs). 탐색이 전부 끝난 상황이면 (3번으로) 2. 탐색(bfs)를 하다가 더 이상 1이 나오지 않으면, 그림의 넓이(cnt)를 벡터(v)에 저장하고, 그림의 개수(num)을 1 더해준다. (1번으로) 3. 마지막으로, 그림의 개수(num)과 vector v에서 최댓값을 출력해준다. 소스코드 #include #..

[정보] 글 작성시 mathjax(수학 수식) 작성 방법

티스토리 관리 페이지의 꾸미기 - 스킨 편집으로 들어가 html 직접 수정해야 한다. 사진에 보이듯이 바로 위에 이 코드를 삽입해주시면, $$e = 2.71828 \cdots$$ 이런 식으로 수학 수식 사용이 가능해집니다. mathjax 사용할 때, 이용하면 편한 사이트 www.hostmath.com/ HostMath - Online LaTeX formula editor and browser-based math equation editor Copy and paste the code above to your webpage! Equation Type Paragraph Equation Inline Equation www.hostmath.com

정보 2020.07.20

[머신러닝] 선형 회귀- 손실 함수, 경사 하강법

회귀 회귀는 Training Data를 이용해 데이터의 특성과 상관관계 등을 파악해, 그 결과를 바탕으로 학습해 Training Data에 없는 데이터가 주어졌을 때, 그 결과를 연속적인 값으로 예측하는 것 선형 회귀 Training Data의 특성을 가장 잘 표현할 수 있는 가중치 W(기울기), 바이어스 b(y절편)를 찾는 학습 개념 오차(error), 가중치(weight) W, 바이어스(bias) b training data의 정답과 직선 $y = Wx+b$ 값의 차이인 오차(error)는, 오차(error) $=t-y = t-\left [ Wx+b \right ]$으로 계산된다. 오차가 크면 직선의 가중치와 바이어스가 잘못된 것이고, 오차가 작다면 직선의 가중치와 바이어스 값이 잘 설정된 것이므로 ..

머신러닝 2020.07.20

[머신러닝] python matplotlib 사용법 - line plot, scatter plot

matplotlib matplotlib은 다양한 데이터를 많은 방법으로 도식화 할 수 있도록 하는 파이썬 라이브러리. matplotlib를 이용하면 numpy로 만든 자료구조를 쉽게 시각화를 할 수 있습니다. matplotlib를 사용하기 위해서는 우선 matplotlib를 설치하고 아래와 같이 import를 해주어야합니다. import matplotlib import matplotlib.pyplot as plt 실행을 하기위해서는 코드 제일 위에 #%%를 작성해주어야합니다. (VSC 기준) line plot #%% import matplotlib.pyplot as plt x_data = [ x for x in range(-5,5) ] y_data = [ y*y for y in range(-5,5) ] ..

머신러닝 2020.07.19

[분할 정복] BOJ 2869 달팽이는 올라가고 싶다

https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 �� www.acmicpc.net 이 문제를 처음에 풀 때는 간단하게 while문을 이용해 풀려고 했지만, 시간초과가 나는 것이다. #include using namespace std; int main() { int a, b, v, sum = 0, cnt = 0; cin >> a >> b >> v; while (true) { cnt++; sum += a; if (sum >= v) break; sum -= b; ..

[DP] BOJ 1003 피보나치 함수

https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 우선 피보나치 함수를 구현할 때는 두 가지 방식으로 구현을 할 수 있다. 첫번째 방식 - 재귀 문제의 코드처럼 계속해서 재귀적으로 함수를 호출해서 1 또는 0이 되게 만드는 방식이다. 그렇게 되면 만약 5라는 값이 함수에 들어오게 되면 fib(3)과 fib(4)로 나뉘게 되고 또 그 두 함수들도 계속 쪼개지다가 0과 1이 될 때, 함수 호출을 멈추게 된다. 그렇게 되면 했던 계산을 계속 되풀이할 뿐만 아니라 시간적으로도 엄청난 손해를 보게되는 방식이다. 두 번째 방식 (정답 코드) - DP 두..

[머신러닝] 수치 미분 - 편미분, 연쇄 법칙

수치 미분(Numerical Derivative) 이상적으로 주어진 함숫값을 이용하여 도함수의 근삿값을 구하는 것 편미분 (partial derivative) 편미분은 입력 변수가 하나 이상인 다변수 함수에서, 미분하고자 하는 변수 하나를 제외한 나머지 변수들은 상수로 취급하고, 해당 변수를 미분하는 것 ex) $ f(x, y) = 3x + 4xy + y^{2} $ , 변수 x에 대하여 편미분 $$\frac{∂f(x,y)}{∂x} = \frac{∂(3x + 4xy + y^{2})}{∂x} = 3 + 4y$$ 연쇄 법칙(chain rule) 합성함수를 미분하려면 합성함수를 구성하는 각 함수의 미분의 곱으로 나타내는 연쇄 법칙(chain rule) 이용. 합성함수 예시) $f(x) = e^{3x} \Righ..

머신러닝 2020.07.18

[머신러닝] python numpy 함수 선언

import numpy numpy 라이브러리를 선언하는 방법은 아래와 같다. import numpy import numpy as np vector import numpy as np A = np.array([1, 2, 3]) B = np.array([4, 5, 6]) # vector A, B 출력 print("A ==", A, ", B == ", B) # vector A, B 형상 출력 => shape print("A.shape ==", A.shape, ", B.shape ==", B.shape) # vector A, B 차원 출력 => ndim print("A.ndim ==", A.ndim, ", B.ndim ==", B.ndim) # vector 산술 연산 print("A + B ==", A+B) pr..

머신러닝 2020.07.18