2025년, 코딩은 선택이 아닌 필수!

2025년 모든 학교에서 코딩이 시작 됩니다. 먼저 준비하는 사람만이 기술을 선도해 갑니다~

반응형

정보/알고리즘 66

LCP (Longest Common Prefix)

접미사 배열(https://thinkmath2020.tistory.com/3558) 자체만으로 해결 할 수 있는 문제는 거의 없다.접미사 배열과 함께 중요한 개념인 LCP(Longest Common Prefix)를 살펴 보자.LCP는 가장 긴 공통 접두사로 일반적으로 그 길이에 의미가 있다.대부분의 상황에서 Suffix Array 에 쓰이는 개념이라고 볼 수 있다. lcp[i]는 접미사 배열의 i번째 접미사와 i-1번째 접미사의 가장 긴 공통 접두사의 길이라고 정의 된다.접미사numlcpa5xana31anana13banana00na40nana22앞의 길이가 얼마만큼 크기가 같은지 찾아 주면 된다.이때 앞에서 부터 하나씩 찾는다면 길이 n 에 대해 O(n^2) 의 시간 복잡도이지만 다음과 같이 처리하면 O..

정보/알고리즘 2022.07.07

Suffix Array(접미사 배열)멘버 마이어스Manber-Myers

컴퓨터 과학에서 접미사 배열(Suffix Array)란 어떤 문자열의 접미사를 사전식 순서대로 나열한 배열을 말한다. S = S[0]S[1]...S[n-1] 이라는 문자열이 있다고 하자.이때 S[i,j] 는 i번째 문자부터 j번째 문자 까지 S의 부분 문자열이라고 하자.문자열 S에 대한 접미사 배열 A는 S의 접미사들을 사전식 순서로 정렬 했을 때 접미사의 시작 위치를 저장한 정수 배열이다.즉 A[i] 에 저장 된 내용은 사전순으로 i 번째인 S의 접미사의 시작 위치이다.다시 말하면문자열 S의 길이를 n이라고 할 때 , 0S[A[i-1],n]  예를 살펴 보자.다음과 같이 문자열 S="banana" 가 있다.i0123456S[i]banana$문자열의 끝은 사전순으로 어떠한 문자보다 앞서기 때문에 $ 라는..

정보/알고리즘 2022.07.04

최소공통조상(LCA-Lowest Common Ancestor)

LCA(Lowest Common Ancestor) 란? LCA 란 최소 공통 조상을 찾는 알고리즘 - 두 정점 u,v 에서 가장 가까운 공통조상을 찾는 과정을 말한다. LCA(Lowest Common Ancestor) 구현 방법 위의 그래프에서 LCA((4,8)=1 이 됩니다. 가장 단순한 방법은 한번에 하나씩 자신의 조상을 찾아 올라가는 방법입니다. 4의 조상은 2,8의 조상은 7,2의 조상은 1,7의 조상은 3,1의 조상은 루트이므로 대기,3의 조상은 1 에서 순차적으로 하나씩 찾아가다가 누군가가 먼저 지나간 자리에 도착하면 그곳이 공통조상이 됩니다. 하지만 이 알고리즘은 최대 O(N) 의 시간이 걸립니다. https://www.acmicpc.net/problem/11438 11438번: LCA 2 ..

정보/알고리즘 2022.01.22

문자열알고리즘-트라이(TRIE)

트라이의 정의를 위키백과의 내용을 인용하면 다음과 같습니다. 트라이(trie)는 컴퓨터 과학에서 탐색트리의 일종이다. 노드의 모든 자손은 노드에 연관된 문자열의 공통 접두사를 공유한다. 트라이 알고리즘이란? 문자열 변수를 비교하는데는 최악의 경우 문자열의 길이에 비례하는 시간이 걸릴 수 있습니다. N개의 원소를 갖는 이진검색 트리에서 원하는 원소를 찾으려면 O(lgN)번의 비교만으로 찾을 수 있습니다. 이러한 이진 검색 트리에서 착안을 하여 고안된 문자열 특화 자료구조가 바로 트라이(trie) 로 집합 내에서 원소를 찾는 작업을 O(M) 시간만에 할 수 있습니다. 그렇다면 어떻게 가능한지 다음을 살펴 보시죠~ 출처:위키백과 그림은 문자열집합 S={"A","to","tea","ted","ten","inn"..

정보/알고리즘 2022.01.02

[알고리즘] 2D Fenwick Tree(2차원 펜윅트리)

2차원 펜윅트리에 앞서 1차원 펜윅트리에 대해 알아보자. https://thinkmath2020.tistory.com/709 [알고리즘] Fenwick Tree(펜윅트리) :: 생각하는 아이들 thinkmath2020.tistory.com 1차원 펜윅트리에 대해 이해를 했다면 이러한 1차원 배열을 여러개 이어 붙인 것을 2차원 펜윅트리라고 생각할 수 있다. 2차원의 구간합을 구하기 위해서 2개의 인덱스(y,x)가 필요하다. 그림으로 이해하면 다음과 같다. (x1,y1) ~ (x2,y2) 의 구간합을 구하는 방법을 살펴 보면 먼저 (0,0)~(x2,y2) 의 구간합을 구한다. 이때 녹색과 하늘색 부분인 (0,0) ~ (x1,y2), (0,0)~(x2,y1) 구역을 빼 주면 되는 것을 확인 할 수 있다. 이..

정보/알고리즘 2021.08.27
반응형