본문 바로가기

swift kmp

(4)
[백준/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로 하는 부분 문자열의 최소 길이를 ..
[백준/Swift] 7575: 바이러스 | PS일지 문제 7575번: 바이러스 첫 번째 줄에는 감염된 프로그램의 개수 N 과 바이러스 코드 추정을 위한 최소 길이를 나타내는 정수 K 가 주어진다. 단, 2 ≤ N ≤ 100이고, 4 ≤ K ≤ 1,000이다. 두 번째 줄부터 각 프로그램에 대한 www.acmicpc.net 간단한 문제 요약 백신 프로그램 개발을 위해서는 바이러스 코드를 알아야 한다. 여러 프로그램에서 공통으로 존재하는 부분이 바이러스로 의심된다. 바이러스는 자신의 코드를 반대로 기입할 때도 있다( 공통으로 존재하는 의심 피하려고). 공통으로 나타나는 코드 길이 K인 경우에 바이러스 코드로 추정한다. 추정되는 바이러스 코드를 구하자! 문제 풀이 프로그램 1: 10 8 23 93 21 42 52 22 13 1 2 3 4 프로그램 2: 1 3 ..
[백준/Swift] 1305: 광고 문제 해석 | PS일지 :] 문제 간단한 문제 요약 전광판에는 같은 내용의 문구가 무한히 반복되어 나온다. 전광판의 크기 L은 전광판에서 한번에 보이는 최대 문자수를 나타낸다. 전광판의 크기가 L이라면 한번에 L개의 문자를 표시 할 수 있다. 광고업자는 길이가 N인 광고문구를 전광판에 붙이려 한다. 근데 돈을 많이 냈기에 N을 무수히 반복해서 전광판의 빈 곳 없이 L만큼의 길이로 채우려고 한다. 문제 풀이, 했갈렸던 점 예를들어 L: 6 N: 4 내가 광고하기 싶은 광고 문구: LOVE 전광판에는 6개의 글자를 넣을 수 있고 문제에서 광고업자는 광고 문구를 무수히 반복해서 L만큼 채워 넣으려고 합니다. 그렇다면 LOVELO 가 광고 문구의 첫 글자로 채워집니다. 문제를 정말 1시간?2시간 봤는데도 문제 이해하기 어려웠어요 ㅠㅠㅠ....
[Algorithm/Swift] 문자열 탐색. KMP 알고리즘 파해치기!! 부분 일치 테이블 pi 채우는 방법 요즘 문자열 알고리즘을 공부하고 있습니다. 문자열 탐색에 많이 사용되는 kmp 알고리즘에 대해서 공부한 개념을 정리하려고 합니다.ctrl + f를 통해 trans라는 단어를 찾아봤습니다. 주어진 text에서 "trans"라는 pattern을 찾았습니다. 문자열 탐색이란 주어진 text에서 특정한 단어 pattern을 찾는 것을 의미합니다. Knuth, Morris, Pratt 세 사람이 만든 KMP 알고리즘이 문자열 탐색에 유명합니다. 그 전에 먼저 문자열 탐색의 가창 기초적인 방법을 설명한 후에 kmp 알고리즘을 통한 문자열 탐색 알고리즘을 소개하려고 합니다. 1. 기본적인 문자열 탐색 방법 Naive string search주어진 문장에서 특정한 문자열을 찾을 수 있는 방법이 뭐가 있을까요? 주어진 ..