본문 바로가기

분류 전체보기

(108)
하이퍼파라미터와 네트워크 깊이의 관계성 Learning Rate, Epoch I  Learning Rate와 Epoch1. Learning Rate와 Epoch의 역할 Learning Rate란?Learning Rate는 한 번의 업데이트(Gradient Descent)에서 가중치가 얼마나 크게 조정되는지를 결정하는 것을 말한다. Learning Rate가 크면 빠르게 학습하지만 불안정하거나 최적점을 넘어서 진동할 수 있고  Learning Rate가 작으면 안정적으로 학습하지만 수렴 속도가 느려지고 더 많은 Epoch이 필요하다.  Epoch란?Epoch는 전체 데이터셋을 학습하는 반복 횟수를 의미한다.Epoch가 적으면 학습이 충분하지 않기 때문에 언더피팅될 가능성이 크다. Epoch가 많으면 많이 학습할 수 있지만 학습 시간이 길어지고과적합될 위험이 있다.  2. Lear..
2차 동적계획법 이항계수 (binomial coefficient) 계산문제, 동전교환 문제 2차 동적 계획법2차 동적계획법(2-dimensional Dynamic Programming, 2D DP)은 동적 계획법의 일종으로, 문제를 해결하기 위해 2차원 배열(또는 테이블)을 사용하는 알고리즘 기법이다. 일반적으로 DP 테이블은 문제의 상태와 하위 문제의 결과를 저장하는데, 2차 DP는 이러한 테이블이 2차원 형태로 확장된 것을 의미한다.2차 동적계획법은 주로 격자 형태의 문제나 이차원 배열을 다룰 때 사용된다. 예를 들어, 이항계수(binomial coefficient)계산 문제, 동전교환 문제, 최장공통부분수열( longest common subsequence), 대부분의 동적 계획법 문제가 있다. 기본적인 원리는 1차원 동적계획법과 동일하나, 문제를 표현하고 상태를 저장하는 DP 테이블이 ..
동적계획법 Dynamic Programming 동전 교환 문제 알고리즘 Dynamic Programming   Dynamic Programming 은 분할 정복 기법과 유사하다.분할 정복 기법은 문제를 여러개의 subproblem으로 나누고, 각 subproblem을 해결할 후, 각 subproblem의 해답을 이용하여 원래 문제의 해답을 계산한다. 그러나 각 subproblem이 독립적이지 않고, 서로 연관되어 있는 경우에는 매우 많은 반복연산이 이루어지고, 이로 하여금 많은 수행시간이 필요해진다.  하지만  Dynamic Programming은 분할정복 기법과 달리 Memoization 즉, 기억을 사용한다. 이말은 재귀적으로 문제를 해결하면서 해결한 작은 문제의 해답을 테이블(배역)에 저장한다는 의미이다. 큰 문제를 해결하면서 작은 문제를 해결할 필요가 있는 경우 그 ..
[python] merge sort 알고리즘 Divide&Conquer 분할정복 알고리즘 으로 해결하기 Merge Sort(합병 정렬)Merge sort는 분할 정복을 통해 문제를 해결하는 정렬방식이다. 방식을 자세히 설명하자면 아래와 같다.  Divide :배열을 각각 n/2개의 데이터로 만들어진 두개의 부분배열로 분할한다. Conquer : 나누어진 부분배열에 대하여 재귀적으로 합병 정렬을 수행한다. 단, 데이터의 개수가 1개인 경우에는 그 자체로 정렬된 상태이다. Combine(Merge):두개의 이미 정렬된 부분 배열을 통합하여 n개의 정렬된 배열로 만든다.   merge sorting은 분할하고 합치는 과정에서 새로운 배열을 필요로 하기 때문에In-place하지 않지만, stable한 sorting 알고리즘이다. 시간복잡도는 O(nlogn)으로 좋은 알고리즘이지만, 앞서 말했듯이 In-place하..
이진트리 Binary Tree 순회 방법 중위 순회 InOrder Traversal, 전위 순회 PreOrder Traversal, 후위 순회 PostOrder Traversal Binary Tree란?Binary Tree는 각 노드가 최대 두 개의 자식 노드를 가지는 트리 구조이다. 이 Binary Tree를 재귀적으로 정의할 수 있는데 오늘은 그것을 살펴보려고 한다.  Binary Tree 재귀적으로 정의 Base case : 트리가 비어 있거나 노드가 하나도 없는 상태 일 때재귀 : 하나의 루트 노드가 있으며, 그 루투 노드에 왼쪽과 오른쪽에 각각 서브 트리가 있다. 이 서브 트리 또한 이진 트리이다.   이진 트리의 구조 이진 트리는 노드, 루트노드, 서브트리 3가지로 구성되어 있다. 노드 : 데이터를 저장하는 기본 단위이다. 루트 노드 : 드리의 가장 상단에 있는 노드이다. 왼쪽 서브트리 와 오른쪽 서브트리 : 각각의 노드가 최대 두 개의 자식 노드를 가질 수 있으며, ..
[MySQL] 프로그래머스 진료과별 총 예약 횟수 출력하기 https://school.programmers.co.kr/learn/courses/30/lessons/132202 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 분석 난이도 : level 2  문제 요구사항 APPOINTMENT 테이블에서 2022년 5월에 예약한 환자 수를 진료과코드 별로 조회하는 SQL문을 작성해주세요. 이때, 컬럼명은 '진료과 코드', '5월예약건수'로 지정해주시고 결과는 진료과별 예약한 환자 수를 기준으로 오름차순 정렬하고, 예약한 환자 수가 같다면 진료과 코드를 기준으로 오름차순 정렬해주세요.  문제 풀이  1. DATE_FO..
[MySQL] 프로그래머스 성분으로 구분한 아이스크림 총 주문량 https://school.programmers.co.kr/learn/courses/30/lessons/133026 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 분석난이도 : level 2테이블 : FIRST_HALF(SHIPMENT_ID, FLAVOR, TOTAL_ORDER), ICECREAM_INFO(FLAVOR, INGREDITENT_TYPE)  문제 요구사항 상반기 동안 각 아이스크림 성분 타입과 성분 타입에 대한 아이스크림의 총주문량을 총주문량이 작은 순서대로 조회하는 SQL 문을 작성해주세요. 이때 총주문량을 나타내는 컬럼명은 TOTAL_O..
[MySQL] 프로그래머스 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/151137 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 분석난이도 : level 2 문제 요구사항:CAR_RENTAL_COMPANY_CAR 테이블에서 '통풍시트', '열선시트', '가죽시트' 중 하나 이상의 옵션이 포함된 자동차가 자동차 종류 별로 몇 대인지 출력하는 SQL문을 작성해주세요. 이때 자동차 수에 대한 컬럼명은 CARS로 지정하고, 결과는 자동차 종류를 기준으로 오름차순 정렬해주세요.  문제 풀이GROUP BY를 사용해서 CAR_TYP..