전체 글

학교공부/기계학습

[기계학습] Linear Regression Model

MSE cost Linear regression에서의 MSE cost와 그 gradient는 다음과 같다. 다음은 그 유도 과정이다. Normal Equations 아래와 같이 gradient 수식을 통해 가중치 값을 바로 구해낼 수 있다. 이 경우 gradient descent로 가중치를 지속적으로 업데이트 해줄 필요 없이 바로 최종 가중치 값을 얻어낼 수 있지만 inverse 계산이 필요하기 때문에 특성이 많아지면 오히려 속도가 느릴 수 있다. Polynominal Regression 고차항을 변수로 치환하여 Linear regression 문제로 환원하여 풀 수 있다. Feature Normalization feature 간 스케일이 다를 경우 cost function이 스케일이 큰 feature의..

학교공부/컴퓨터 네트워크

[컴퓨터 네트워크] Computer Network outline

The Internet 인터넷 네트워크의 기본 구성 요소는 다음과 같다: 수십억 개의 연결된 컴퓨팅 장치: 이들 장치는 '호스트' 또는 '엔드 시스템'이라고도 불리며, 인터넷의 "가장자리"에서 네트워크 애플리케이션을 실행한다. 패킷 스위치: 패킷(데이터 조각)을 전달하는 역할을 한다. 이에는 라우터와 스위치가 포함된다. 통신 링크: 광섬유, 구리, 무선, 위성 등 다양한 매체를 통해 데이터를 전송한다. 이러한 링크의 데이터 전송 속도는 '대역폭'으로 측정된다. 네트워크: 디바이스, 라우터, 링크 등의 모음으로서 특정 조직에 의해 관리된다. 인터넷은 이러한 구성 요소들이 복잡하게 연결되어 있어 전 세계적인 통신망을 형성하고 있다. 인터넷은 말 그대로 "네트워크의 네트워크"로, 다양한 종류의 네트워크가 상호..

학교공부/컴퓨터 네트워크

[컴퓨터 네트워크] Transport Layer

Transport services and protocols 전송 계층은 다른 호스트에서 실행되는 응용 프로그램 프로세스 간의 논리적 통신을 제공한다. 이 계층의 주된 역할은 데이터 전송을 관리하고, 오류를 검출 및 복구하며, 데이터 흐름을 제어하는 것이다. 전송 프로토콜이 종단 시스템에서 수행하는 작업들은 다음과 같다: 송신자: 응용 프로그램 메시지를 세그먼트로 분할하고, 이를 네트워크 계층으로 전달한다. 수신자: 세그먼트를 재조립하여 메시지를 만들고, 이를 응용 계층으로 전달한다. 인터넷 응용 프로그램에 사용 가능한 두 가지 전송 프로토콜이 있다: TCP (Transmission Control Protocol): 신뢰성 있는 스트림 서비스를 제공한다. 즉, 데이터는 순서대로 도착하며 중복되거나 누락되지..

학교공부/컴퓨터 네트워크

[컴퓨터 네트워크] Application Layer

Network application 네트워크 애플리케이션은 여러 다른 종단 시스템(End Systems)에서 실행되고 네트워크를 통해 서로 통신하는 프로그램을 작성하는 과정이다. 예를 들어, 웹 서버 소프트웨어는 브라우저 소프트웨어와 통신한다. 여기서 "종단 시스템"이란 사용자가 직접적으로 사용하고 제어할 수 있는 장치를 의미한다. 이러한 종단 시스템에는 개인용 컴퓨터, 스마트폰, 태블릿 등이 포함될 수 있다. 네트워크 애플리케이션을 개발할 때 중요한 점은 네트워크 핵심 장치(Network-core devices)에 대한 소프트웨어를 작성할 필요가 없다는 것이다. 네트워크 핵심 장치들은 라우터나 스위치 같은 장비로서, 데이터 패킷의 전송 및 라우팅 등의 기능을 담당한다. 이런 장치들은 일반적으로 사용자 ..

개인공부/알고리즘

BOJ 27970 [OX]

문제 https://www.acmicpc.net/problem/27970 27970번: OX O와 X로 이루어진 문자열이 주어진다. 모든 문자를 X로 만들 때까지 다음 연산을 반복할 때, 시행하는 연산의 횟수를 구하시오. 문자열의 가장 왼쪽에 있는 O를 X로 바꾸고, 그보다 왼쪽에 있는 X www.acmicpc.net 풀이 a = 10**9 + 7 s = input() arr = [1]*len(s) for i in range(1, len(s)): arr[i] = (arr[i-1]*2)%a count = 0 for i in range(len(s)): if s[i] == 'O': count = (count + arr[i])%a print(count) 처음에는 for문을 통해 일일이 count하도록 코드를 짰..

개인공부/알고리즘

BOJ 28014 [첨탑 밀어서 부수기]

문제 https://www.acmicpc.net/problem/28014 28014번: 첨탑 밀어서 부수기 첫째 줄에 첨탑의 개수 $N$이 주어진다. $(1\leq N\leq 5\,000\,000)$ 둘째 줄에는 앞에서부터 차례대로 첨탑의 높이 $H_1, H_2, \cdots, H_n (1\leq H_i\leq 1\,000\,000)$ 이 주어진다. 입력으로 주어지는 모든 수는 정 www.acmicpc.net 풀이 #include using namespace std; int count = 0; int main(){ ios::sync_with_stdio(false); cin.tie(NULL); int n; int n1 = 0; int n2; cin >> n; for(int i = 0; i> n2; if(n..

개인공부/알고리즘

BOJ 26258 [다중 일차 함수]

문제 https://www.acmicpc.net/problem/26258 26258번: 다중 일차 함수 2차원 좌표 평면에 점 $N$개가 주어진다. $i$번째 점의 위치는 $(x_i, y_i)$이고, $1 \leq i \lt N$인 모든 $i$에 대하여 $x_i \lt x_{i+1}$을 만족하며, 점 $i$와 점 $i + 1$을 잇는 일차 함수가 그려진다. 각각 구간 www.acmicpc.net 풀이 #include using namespace std; int cor[100005][2]; int main(){ ios::sync_with_stdio(false); cin.tie(NULL); int N, Q; float x, y, k; cin >> N; for(int i = 0; i> x >> y; cor[i..

개인공부/알고리즘

BOJ 21735 [눈덩이 굴리기]

문제 https://www.acmicpc.net/problem/21735 21735번: 눈덩이 굴리기 눈송이들이 많은 동네인 숙명여대 앞마당에서 눈사람 만들기 대회를 연다. 앞마당의 길이는 $N$이고 위치 $1$부터 위치 $N$ 까지만 눈이 쌓여있다. 위치 $i$에 눈이 $a_i$만큼 쌓여있다. 대회 규칙은 www.acmicpc.net 풀이 #include using namespace std; int snow[105]; int N, M; int bf(int pos, int count, int size){ if(pos >= N) return size; if(count == M) return size; int result = 0; result = max(bf(pos+1, count+1, size+snow[p..

개인공부/알고리즘

BOJ 27963 [합금 주화]

문제 https://www.acmicpc.net/problem/27963 27963번: 합금 주화 첫 번째 줄에 0보다 크고 100보다 작은 세 정수 $d_1$, $d_2$, $\chi$가 공백으로 구분되어 주어진다. 서로 다른 두 정수 $d_1$, $d_2$는 기념주화를 이루는 두 가지 금속의 밀도이다. 단위는 $\text{g}/\text{cm} www.acmicpc.net 풀이 #include using namespace std; int main(){ int a, b, m; double result; cin >> a >> b >> m; if(a

학교공부/운영체제

[운영체제] 스레드와 동시성(Thread & Concurrency)

스레드의 장점 1. 응답성 - 프로세스의 일부가 막혀도 실행될 수 있으며, 이는 유저 인터페이스에서 중요하다. - 예를 들어, 사용자 인터페이스 스레드와 백그라운드 작업 스레드를 분리하여 사용자가 프로그램의 응답성을 유지사면서 긴 작업을 처리할 수 있다. 2. 자원 공유 - 스레드는 프로세스의 자원을 공유하므로 메모리 공유나 message passing이 더 쉽다. - 스레드는 프로세스의 주소 공간을 공유하므로 변수 등의 데이터를 효율적으로 공유하여 작업을 처리할 수 있다. 3. 경제성 - 스레드는 프로세스 내에서 생성되는 것이므로 프로세스를 만드는 것보보다 메모리 및 자원 사용 측면에서 경제적이다. - context switching 보다 thread switching이 overhead가 더 적다. 4..

DevM
개발캠프