PS

PS 문자열 알고리즘 - 0. Introduction

kdy40929 2025. 8. 3. 20:18

 

PS를 하다보면 몇몇 문자열 알고리즘을 마주할 수 있다. KMP, 해싱, 라빈 카프, 아호 코라식, 매내처 등 다양한 알고리즘들이 있다. 이들 대부분 플래티넘 난이도에 기본 문제가 속할 정도로 꽤나 난이도가 있는 알고리즘들이기에 이를 한 번 정리할 필요성이 있다고 느꼈다. 그리고 무엇보다도 필자의 #string 레이팅이 아래 그림과 같이 미세하지만 오목한 것을 발견해 이를 볼록 다각형으로 바꿔놓기 위해서 문자열 알고리즘을 공부할 필요가 있다고 느꼈기 때문이기도 하다.

convex polygon을 만들어야 한다는 집념

 

 

그래서 순차적으로 문자열 알고리즘을 올려 보려고 한다.

 

아래는 매 게시글을 올릴 때마다 추가할 목차이다.

 

[1] KMP 알고리즘의 원리&구현: https://kdy40929.tistory.com/3

 

PS 문자열 알고리즘 - 1. KMP 알고리즘

문자열 알고리즘 블로그의 첫 시작은 KMP로 정했다. KMP 알고리즘은 해결하고자 하는 문제 상황 자체가 매우 단순하고 기초적이기 때문에 첫 시작으로 적합하다는 생각이 들었다. 이번 글에서는 K

kdy40929.tistory.com

[2] KMP 알고리즘 응용: https://kdy40929.tistory.com/5

 

PS 문자열 알고리즘 - 2. KMP 응용

지난 글에서 KMP 알고리즘의 원리와 시간복잡도를 알아보았고, 이를 바탕으로 문자열을 검색하는 기본 문제를 풀어보았다. 이번 글에서는 KMP 알고리즘을 활용하는 문제들을 몇 가지 살펴볼 것이

kdy40929.tistory.com

[3] Z 알고리즘: https://kdy40929.tistory.com/6

 

PS 문자열 알고리즘 - 3. Z 알고리즘

지난번에 다루었던 KMP 알고리즘에 이어서, 이번에는 Z 알고리즘에 대해 다뤄보고자 한다. 바로 본론으로 들어가보자. Z 알고리즘은 문자열 $S$가 주어졌을 때, 문자열 $S$의 접미사와 문자열 $S$의

kdy40929.tistory.com

[4] 매내처 알고리즘: https://kdy40929.tistory.com/7

 

PS 문자열 알고리즘 - 4. Manacher 알고리즘

이번에 글을 적어볼 알고리즘은 매내처 알고리즘이다. 이 역시 바로 본론으로 들어가자면, 매내처 알고리즘은 어떤 문자열 $S$가 주어졌을 때, $S$의 부분 문자열 (앞뒤에서 0개 이상의 문자를 떼

kdy40929.tistory.com

[5] 해싱 (라빈 카프): https://kdy40929.tistory.com/8

 

PS 문자열 알고리즘 - 5. 라빈 카프 알고리즘 (해싱)

이번에 다뤄볼 알고리즘은 해싱, 그 중에서도 라빈 카프 방식에 대해 살펴볼 것이다. 서론은 짧게 하고 빠르게 본론으로 넘어가보자.해싱 (Hashing)해싱은 문자열을 해시 함수에 넣어서 특정한 값

kdy40929.tistory.com

[6] 접미사 배열과 lcp 배열 원리/구현: https://kdy40929.tistory.com/9

 

PS 문자열 알고리즘 - 6. 접미사 배열과 lcp 배열

이번에는 접미사 배열과 lcp 배열에 대해 살펴보고자 한다. 바로 본론으로 들어가자. 먼저, 접미사 배열은 어떤 문자열 $S$가 주어졌을 떄, 이 문자열의 모든 접미사를 사전순으로 정렬할 때, 각

kdy40929.tistory.com

[7] 접미사 배열과 lcp 배열 활용: https://kdy40929.tistory.com/10

 

PS 문자열 알고리즘 - 7. 접미사 배열과 lcp 배열 응용

이번에는 지난 글에서 구현하는 방법을 알아본 접미사 배열과 lcp 배열을 어떻게 활용하는지 알아볼 것이다.문제를 풀어보기 전에는 suffix array와 lcp array가 도대체 어떤 의미를 가지나.. 싶기도

kdy40929.tistory.com

[8] 1D Trie: https://kdy40929.tistory.com/11

 

PS 문자열 알고리즘 - 8. 1D Trie 구현

이 글은 독자가 trie 자료 구조에 대해 이미 알고 있다는 전제 하에서 시작한다. trie라는 자료 구조를 모른다면 이 글을 읽기 전에 다른 블로그를 읽고 https://www.acmicpc.net/problem/14725와 같은 문제를

kdy40929.tistory.com

[9] 아호 코라식: 추후 작성 예정