🍋 ⚾️ 💻 🎬 🎮

Tech 37

최단 경로 + 방문 노드 구하기 (BFS, DFS, Dijkstra)

최단 경로 + 방문 노드 구하기단순히 거리를 구하는 것뿐 아니라 최단 경로를 따라 방문한 노드들을 어떻게 구할 수 있을까? DFS vs BFSDFS깊이 우선 탐색이라 최단 경로를 보장하지 않음경로를 찾을 수는 있지만 최단 경로가 아닐 수 있음 BFS한 단계씩 확장하면서 탐색하기 때문에무가중치 그래프에서 최단 경로 보장이 가능BFS + 부모 추적 방식 사용 시, 최단 경로를 복원할 수 있음 BFS로 최단 경로 + 방문 노드 구하기from collections import deque, defaultdict# 그래프 정의 (무방향)graph = defaultdict(list)edges = [(1,2), (1,3), (2,4), (2,5), (3,6)]for u, v in edges: graph[u]..

Tech/Algorithm 2025.08.17

[SQL] CAST, CONVERT (MySQL)

DB 조회할 때, GROUP BY로 MAX 값을 추출하는데 실제 최댓값이 아닌 엉뚱한 값이 계속해서 나왔다.원인은 데이터 형식이 Integer가 아닌 String이 섞여있어서인 것 같았다. 이를 해결하는 방법은 CAST, CONVERT로 데이터 형식을 일치 시켜주는 것..! 변환할 수 있는 데이터 형식: BINARY, DECIMAL, CHAR, NCHAR, JSON, DATE, DATETIME, TIME, SIGNED, UNSIGNED CASTSELECT col_name, data_type, MAX(CAST(data_len AS UNSIGNED))FROM tableGROUP BY col_name, data_type; CONVERTSELECT col_name, data_type, MAX(CONV..

Tech/SQL 2025.07.29

[Algorithm] 다익스트라 (Dijkstra)

다익스트라 알고리즘하나의 시작점에서 다른 모든 노드까지 가장 짧은 거리(최단 경로)를 찾는 알고리즘여러 도시(노드)가 도로(간선)로 연결되어 있을 때, 특정 도시에서 다른 도시로 가장 빠르게 가는 방법을 찾을 수 있다. 특징음(-)의 간선이 없을 때 정상적으로 동작한다.각 노드까지의 현재까지 확인된 최단 거리를 1차원 리스트에 저장하고, 계속 갱신하면서 더 짧은 경로를 찾는다.* DP의 일종이라고 할 수 있는데 작은 문제의 해(특정 노드까지의 최단 거리 구하기)를 이용해 큰 문제를 푸는 방식을 따르기 때문 작동 방식출발 노드를 설정한다.최단 거리 리스트를 초기화한다.시작점은 거리 0, 나머지는 무한대로 설정한다.방문하지 않은 노드 중에서 최단 거리가 가장 짧은 노드를 선택한다.해당 노드를 거쳐 다른..

Tech/Algorithm 2025.07.29

[RAG] VectorDB Embedding

사용자가 원하는 정보사용자의 질문과 관련있는 데이터관련이 있다는 것을 판단하는 기준은 vector가 된다.vector : 단어 또는 문장의 유사도를 파악해서 관련성을 측정한다.Vector를 생성하는 방법Embedding 모델을 활용해서 vector 생성한다.문장에서 비슷한 단어가 자주 붙어있는 것을 학습한다.예를 들어, A : "왕은 왕자의 아버지다." / B : "여왕은 왕자의 어머니다.""왕자의" 라는 단어 앞에 등장하는 "왕"과 "여왕"은 유사할 가능성이 높다. Vector DatabseEmbedding 모델을 활용해 생성된 vector를 저장한다.vector와 함꼐 metadata도 저장된다.metadata : 문서의 이름, 페이지 번호 등의 데이터hallucination을 대비하기 위해서 어떤..

Tech 2025.05.19

[SQL] DATE_FORMAT (MySQL)

Date Format (MySQL) 📎  요일FormatDescriptionCodeResult%a요일(Mon ~ Sun)SELECT DATE_FORMAT("2015-09-07", "%a");Mon%W요일(Monday ~ Sunday)SELECT DATE_FORMAT("2015-09-07 20:25:19", "%W");Monday%w요일(0(Sun) ~ 6(Sat)SELECT DATE_FORMAT("2015-09-07 20:25:19", "%w");1   📎  날짜FormatDescriptionCodeResult%Y연도SELECT DATE_FORMAT("2015-09-07 20:25:19", "%Y");2015%y연도(뒤 두자리만)SELECT DATE_FORMAT("2015-09-07 20:25:19"..

Tech/SQL 2025.04.06

[Algorithm] 이분 탐색 (Binary Search)

이진 탐색검색 간격을 반으로 반복적으로 나누어 정렬된 배열로 사용하는 알고리즘대상 요소와 검색 공간의 중간 값을 비교하여 검색 간격을 절반으로 줄임.  ✍🏻  동작 예시index0123456789 -5-2012456710Low   Middle    High-5-2012456710     Low Middle High-5-2012456710        LowMiddleHigh   이진 검색 알고리즘 적용 조건데이터 구조를 정렬데이터 구조의 모든 요소에 액세스하려면 일정 시간 소요   작동 방식배열의 중간 요소를 Key와 비교한다. (Key는 찾고자 하는 요소)키를 찾으면 프로세스 종료키를 찾지 못한 경우 다음 공간으로 탐색할 배열의 절반을 선택한다.키가 중간 요소보다 작으면  →   중간을 기준으로 왼쪽..

Tech/Algorithm 2025.03.24

[Algorithm] 깊이 우선 탐색 (DFS) & 너비 우선 탐색 (BFS)

깊이 우선 탐색 (Depth-First Search, DFS)루트 노드 혹은 임의 노드에서 다음 브랜치로 넘어가기 전에 해당 브랜치를 모두 탐색하는 방법 (스택 or 재귀함수를 통해 구현) 가능한 한 깊이 내려가면서 탐색을 진행한다.특정 경로를 찾거나, 그래프의 모든 노드를 방문하는 데 유용하다. def dfs(graph, v, visited): visited[v] = True for i in graph[v]: if not visited[i]: dfs(graph, i, visited)visited = [False] * ndfs(graph, 1, visited)      너비 우선 탐색 (Breadth-First Search, BFS)루트 노드 또는 임의 노드에서 인접한 노드부터 먼저 탐색하는 방법 ..

Tech/Algorithm 2025.03.19

[Algorithm] 계수 정렬 (Counting Sort)

계수 정렬 (Counting Sort)계수 정렬은 비교하지 않는 정렬 알고리즘으로 데이터의 개수를 세서 정렬하는 방식. 정렬하려는 데이터의 범위를 인덱스로 갖는 빈 배열을 생성한다.데이터 범위가 0 ~ 99까지라면 크기가 100인 빈 배열을 생성한다.정렬하려는 배열을 순회하면서 데이터에 해당하는 인덱스의 값을 1씩 증가한다. 제약 조건데이터의 범위가 0 또는 양의 정수여야 한다. 예시배열 [8, 3, 9, 2, 3, 4, 0, 5]를 계수 정렬하는 과정. 정렬하려는 배열 : 83923405계수 배열 :1012110011인덱스 ↑0123456789최종 배열 : 02334589 시간 복잡도  :  O(n + k)   * 데이터의 개수 : n , 데이터의 최댓값 : k  (데이터의 최댓값이 무한대에 수렴하면 ..

Tech/Algorithm 2025.03.18

[Algorithm] 기수 정렬 (Radix Sort)

기수 정렬 (Radix Sort)기수 정렬은 비교하지 않는 정렬 알고리즘으로 낮은 자릿수부터 정렬을 수행. 숫자별로 버킷(bucket)이라는 queue를 생성정렬하려는 숫자들의 각 자릿수에 해당하는 숫자를 각각의 버킷에 넣어 정렬이를 자릿수만큼 반복한다.   단점버킷을 구성하기 위한 추가 메모리가 필요정렬할 수 있는 데이터 타입이 한정적 예시숫자 배열 [73, 21, 56, 13, 16, 35, 41, 69]를 기수 정렬을 이용해 오름차순으로 정렬하는 과정7321561316354169버킷          0123456789 버킷 4121 1373 351656  690123456789  2141731335561669버킷 1613213541566973  0123456789  1316213541566973 시..

Tech/Algorithm 2025.03.17
728x90
반응형