| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- BFS
- system hacking
- Image Processing
- Computer Architecture
- llm을 활용 단어장 앱 개발일지
- MATLAB
- 파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터비전 심층학습
- BOF
- Widget
- PCA
- ML
- C++
- Got
- FastAPI
- ARM
- bloc
- pytorch
- Stream
- Kaggle
- 영상처리
- study book
- BAEKJOON
- MDP
- fastapi를 사용한 파이썬 웹 개발
- 백준
- rao
- Algorithm
- Dreamhack
- DART
- Flutter
- Today
- Total
목록Algorithm (30)
Bull
소개만든 사람의 이름 앞 글자를 따서 Knuth, Morris, Prett로 지었다. 해당 알고리즘은 문자열 A에서 문자열 B가 어디에 있는지 찾는 알고리즘이다. 이는 브루트포스를 통해서 모든 경우를 찾아도 되지만, O(NM) 시간복잡도를 가지기 때문에 해당 알고리즘을 사용하면 O(N+M)으로 단축시킬 수 있다.KMP 알고리즘 내에서는 LPS (Logest Prefix which is also Suffix) 알고리즘이 사용되는데, 이는 다른 글로 정리 하였다. [1]에 정리하였다. [1] LPS 정리도 [2] 자료를 통해서 정리를 하였는데, 해당 블로그 글을 작성하신 분이 정리를 참 잘해놓으셔서 이해하는데 큰 도움을 얻었다.원리[1] LPS를 설명할 때 패턴이 일치되는 부분의 접두사와 접미사를 각 문자..
소개패턴 매칭. 원래는 KMP 알고리즘을 알기 전에, 아호-코라식 알고리즘을 우선적으로 알게 되었다. 하고있는 프로젝트에서 문장을 가지고 특정 문자열이 포함되어 있는 찾아야 했다. 하지만, 일반적인 브루트 포스 방식으로 한다면 시간이 오래 걸릴 것이란 것을 알고 있다. 그래서 제미나이가 나에게 아호-코라식 알고리즘을 소개해주었다. 알아보니 아호-코라식 알고리즘을 알기전에 KMP 알고리즘이 사용되기 때문에 그것을 먼저 알 필요가 있었다.문자열 패턴 매칭은 다음과 같은 예시로 설명할 수 있다."The rain in Spain stays mainly in the plain" (영화 "마이 페어 레이디" 중)rain, Spain, mainly, plain 과 같이 ain 패턴이 많기 때문에, 단순 브루트 포스는..
학교에서 배운 힙소트 정리 코드 아카이브 용.이론을 안다는 전제하에 코드만 읽는다.def heapify(arr,n,i): key = i l = key*2+1 r = key*2+2 # 왼쪽 자식 노드 검사 if l arr[key]: largest = l else: largest = key # 오른쪽 자식 노드 검사 if r arr[largest]: largest = r # 바뀐 게 있다면 자식 노드와 값을 바꾸고 해당 자식 노드를 검사 if largest != key: temp = arr[largest] arr[largest] = arr[key] arr[key] = temp heapify(arr,n,largest)# 절반부터 하는 이유는 절반보다 위..
문제1019: 책 페이지N이 36이라면 1~36페이지까지 즉 1,2,3,...35,36에 나오는 모든 숫자를 다 세는 것이다.설명각 자리 수 마다 검사하여 모든 경우의 수를 구한다. 1234라는 N이 주어졌을 때 1,2,3,4 모두 검사하는 것이다.1의 자리 수를 검사할 때 1의 자리를 0~9까지 모두 바꿔보는 것이다. 그리고 일의 자리를 제외한 나머지 부분을 보는 것이다.주석을 보고 숫자 디버깅으로 이해하는 게 편할 것이니 포괄적인 설명은 포기한다. (포괄적으로 말하기가 어려워서)1204일 때 0104~1204 (0004는 불가, 다른 숫자 과정에서 겹침.)1214일 때 0014~12141224일 때 0024~12241234일 때 0034~1134 | 1230,1231,1232,1233,12341244..
오른쪽 1 제거// C++#include #include int main() { unsigned int num = 0xFFFFFFFF; while (num > 0) { std::cout (num) (num) num -= num & -num 혹은 num = num & (num - 1) 을 해주면 된다. # 결과1111111111111111111111111111111111111111111111111111111111111110111111111111111111111111111111001111111111111111111111111111100011111111111111111111111111110000111111111111111111111111111000001111111111111111..
Baekjoon 2143문제숫자 T가 주어지고 배열 A와 B가 주어진다. 여기서 부 배열이라는 개념이 있는데 A[i], A[i+1], ..., A[j] 와 같이 연속된 배열을 부배열이라고 한다. A[13]까지라고 한다면 A[7], A[8], A[9], ... A[13] 도 가능하고 A[2], A[3]도 부 배열이라고 할 수 있다. 문제는 A의 부 배열과 B의 부 배열이 합해서 T가 되는 경우의 수를 구하는 것이다.예를 들어 본문의 내용과 같이 A = {1, 3, 1, 2}, B = {1, 3, 2}, T=5인 경우, 부 배열 쌍의 개수는 다음의 7가지 경우가 있다.T(=5) = A[1] + B[1] + B[2] = A[1] + A[2] + B[1] = A[2] + B[3] = ..
Baekjoon 1806문제제목처럼 부분합을 구하는 문제이다.1,2,3,4 배열이 있을 때, 1 2 3 4 1 2 1 3 1 4 2 3 2 4 3 4 1 2 3 1 2 4 2 3 4 1 2 3 4와 같이 모든 조합이 가능 한 원소의 합이다.이 집합의 원소들의 합이 S 이상이 되는 것 중 원소가 연속되어 있고 짧은 것을 찾는 것이다.입력첫 번째 줄에 수열의 길이 N과 부분합 S가 주어진다. (10 ≤ N , 0 )두 번째 줄에 길이 N인 수열이 주어집니다. 수열의 각 원소는 10,000 이하의 자연수이다.출력합이 S 이상이 되는 가장 짧은 부분 수열의 길이를 출력합니다. 만약 그러한 부분 수열이 없다면 0을 출력한다.아이디어이 문제를 해결하기 위해 슬라이딩 윈도우(Sliding Window) 기법을 사용한..
