백준 10773 제로 (파이썬)
백준 10828 스택 (파이썬)
스택 (Stack)
스택이란 (Stack)
- 같은 구조와 같은 크기의 자료들을 정해진 방향으로만 쌓을 수 있고 후입선출(LIFO) 형식으로 입출력이 일어나는 자료구조이다.
- 제일 먼저 입력된 데이터가 맨 아래 쌓이고 가장 최근에 입력된 데이터가 가장 위에 쌓이는 구조이다.
- 삽입 연산은 Push연산 이라 하고 삭제 연산은 pop 연산 이며 둘다 사용이 쉽다.
- 비어있는 스택에서 원소를 추출하는 것은 Stack underflow이고 스택이 넘치는 경우 stack overflow라고 말한다.
장점과 단점
- 장점 : 데이터의 삽입과 삭제가 빠르다
- 단점 : 탐색을 하려면 원소를 하나하나 꺼내서 옮겨야하고 맨 위의 원소만 접근 가능하다
- 재귀 알고리즘이나 역추적을 해야할 경우(실행취소) 유용하게 사용할 수 있다
백준 13305 주유소 (파이썬)
백준 1541 잃어버린 괄호 (파이썬)
백준 11399 ATM (파이썬)
백준 1931 회의실 배정 (파이썬)
백준 11047 동전 (파이썬)
백준 12865 평범한 배낭 (파이썬)
백준 1912 연속합 (파이썬)
백준 9251 LCS (파이썬)
백준 2565 전깃줄 (파이썬)
백준 11054 가장 긴 바이토닉 부분 수열 (파이썬)
백준 11053 가장 긴 증가하는 부분 수열 (파이썬)
그리디 알고리즘이란 (Greedy Algorithm)
그리디 알고리즘 (Greedy Algorithm)
항상 최적의 해를 구하는 동적 계획법과는 다르게 그리디 알고리즘은 현재 단계에서 선택할 수 있는 최적의 선택만을 하여 답을 구성해나가는 방식이다. 그러나 이 방식은 결론적으로 최적의 해를 구한다고 단정지을 수 는 없다.
- 그리디 알고리즘과 동적 계획법은 상호보완적인데 그리디 알고리즘은 빠른 계산 속도 을 가지고 동적 계획법은 최적의 해 를 구한다는 점에서 장점이 있다.
- 그리디는 아래 두 가지 조건이 성립되어야 잘 작동할 수 있다.
- 탐욕스러운 선택 조건 (Greedy choice property) : 앞의 선택이 이후의 선택에 영향을 주지 않는 조건
- 최적 부분 구조 조건(Optimal Substructure) : 문제에 대한 최종 해결 방법이 부분 문제에 대해서도 또한 최적 문제 해결 방법이다는 조건
- 그리디 알고리즘이 적용되는 대표적인 예시가 몇 가지 있다. 참고 사이트 두번째 링크에서 확인해볼 수 있다.
- 활동 선택 문제 (The Activity-Selection Problem)
- 분할가능 냅색 문제 (The Fractional Knapsack problem)
동적계획법 (Dynamic Programming)
동적계획법이란 (Dynamic Programming)
- 동적계획법이란 전체 문제를 subproblmes로 단순화하고 재귀적 구조를 활용하여 병합해나가며 전체 문제를 해결하는 방법이다.
- 분할정복 알고리즘(Divide & Conquer)은 subproblems가 여러번 계산되지만 동적계획법은 딱 한번만 계산하고 그 답을 배열에 저장해두기에(Memoization) 매번 다시 계산하는 불필요한 작업을 피한다.
- 중복 계산을 줄이기에 시간복잡도가 분할정복 알고리즘보다는 적다.
- 최적해를 구할 수 있도록 전체 문제를 작은 문제로 단순화한다
- 최적해를 구할 수 있는 재귀적 구조를 찾는다
- 일반적으로 Bottom-up방법으로 최적해를 계산한다 (작은 문제 해결방법으로 전체 문제 해결)
[Learning Evaluations - Interval Target] (Root Average Squared Error, Relative Error)
in Dev on Machine Learning
Supervised model(target variable이 있는 모델)이 좋은 모델인지 아닌지 판단하는 방법에는 여러가지가 있다.
앞으로 소개할 learning evaluations은 어떤 모델을 사용하는 것이 좋을지 판단해주는 지표들이다.
다양한 지표들이 있기에 타겟의 유형별(Interval, Binary, Nominal)로 나누어 글을 써보려고 하는데 이 글은 Interval 타겟
의 learning evalutations이다.
자세한 설명에 앞서 짤막한 요약은 아래 표와 같다.
Interval | Binary | Nominal |
---|---|---|
RASE Relative Error | AUC RASE Misclassification Rate F1 Score Receiver Operating Characteristic Curve Lift Curve Kolmogorov-Smirnov Curve Precision-Recall Curve | AUC RASE Misclassification Rate |
백트래킹 알고리즘이란 (Backtracking Algorithm)
백트랙킹 알고리즘 (Backtracking Algorithm)
- 백트래킹은 여러 개의 솔루션을 가진 문제에서 조건을 만족하는 모든 솔루션을 체크 하는 알고리즘이다.
- 솔루션을 하나씩 체크하며 조건에 맞지 않는 솔루션은 삭제하는 과정을 거친다.
- 재귀를 사용하거나 스택을 통한 DFS를 사용할 수 있다.