본문 바로가기

kmp

(2)
[백준/Swift] 4354: 문자열 제곱 | PS일지 문제 4354번: 문자열 제곱 알파벳 소문자로 이루어진 두 문자열 a와 b가 주어졌을 때, a*b는 두 문자열을 이어붙이는 것을 뜻한다. 예를 들어, a="abc", b="def"일 때, a*b="abcdef"이다. 이러한 이어 붙이는 것을 곱셈으로 생각한다 www.acmicpc.net 간단한 문제 요약 문자열 S가 주어졌을 때 어떤 문자열 a에 대해 s=a^n을 만족하는 가장 큰 n을 찾으시오. 문자열 곱셈에 대해서 a^0 = "" (빈 문자열) a^(n+1) = a*(a^n) 으로 정의 됩니다. 문제 풀이, 느낀점 "주어진 문자열S에서 어떻게 하면 부분 문자를 선정해 반복적으로 곱하면 S를 만들 수 있을까?.." 가장 유리한 것은 s문자열의 첫 문자부터 prefix로 하는 부분 문자열의 최소 길이를 ..
[Algorithm/Swift] 문자열 탐색. KMP 알고리즘 파해치기!! 부분 일치 테이블 pi 채우는 방법 요즘 문자열 알고리즘을 공부하고 있습니다. 문자열 탐색에 많이 사용되는 kmp 알고리즘에 대해서 공부한 개념을 정리하려고 합니다.ctrl + f를 통해 trans라는 단어를 찾아봤습니다. 주어진 text에서 "trans"라는 pattern을 찾았습니다. 문자열 탐색이란 주어진 text에서 특정한 단어 pattern을 찾는 것을 의미합니다. Knuth, Morris, Pratt 세 사람이 만든 KMP 알고리즘이 문자열 탐색에 유명합니다. 그 전에 먼저 문자열 탐색의 가창 기초적인 방법을 설명한 후에 kmp 알고리즘을 통한 문자열 탐색 알고리즘을 소개하려고 합니다. 1. 기본적인 문자열 탐색 방법 Naive string search주어진 문장에서 특정한 문자열을 찾을 수 있는 방법이 뭐가 있을까요? 주어진 ..