본문 바로가기

알고리즘/String3

IOIOI(KMP 알고리즘) IOIOI 백준 5525번 문제https://www.acmicpc.net/problem/5525 5525번: IOIOIN+1개의 I와 N개의 O로 이루어져 있으면, I와 O이 교대로 나오는 문자열을 PN이라고 한다. P1 IOI P2 IOIOI P3 IOIOIOI PN IOIOI...OI (O가 N개) I와 O로만 이루어진 문자열 S와 정수 N이 주어졌을 때, S안에 PN이 몇www.acmicpc.net   1. 문제    2. 풀이2.1 KMP 알고리즘2.1.1 아이디어이 문제는 주어진 문장열에서 특정 문자열이 몇 개나 있는지를 찾는 문제이다.이 문제는 다음과 같이 단순하게 문자열의 단어를 처음부터 비교하는 것으로 해결할 수 있다.주어진 각 문자열이 다음과 같다고 하자. [단어 찾기 그_1] [단어.. 2024. 6. 10.
순한 수열 순한 수열 백준 12104번 문제 https://www.acmicpc.net/problem/12104 12104번: 순환 순열 두 바이너리 문자열 A와 B가 주어졌을 때, A와 XOR 했을 때, 0이 나오는 B의 순환 순열의 개수를 구하는 프로그램을 작성하시오. 순환 순열이란 순열 P = P0, P1, ..., PN-1이 있을 때, 왼쪽으로 k번 순환 www.acmicpc.net 1. 문제 2. 풀이 2.1 풀이 방법 문제에서 요구하는 대로, B 순열을 왼쪽으로 이동시키며 A와 같아지는 경우를 찾으면 된다. 예를 들어 아래와 같은 순열이 주어졌다고 하자. [순열 예_그 1] B 순열을 왼쪽으로 한 칸씩 이동시키면서 A와 같아지는지를 확인한다. [순열 예_그 2] 이 예제의 경우 B 순열을 4번 이동 시키.. 2023. 1. 21.
회-문 회-문 백준 17609번 문제 https://www.acmicpc.net/problem/17609 17609번: 회문 각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다. www.acmicpc.net 1. 문제 2. 풀이 2.1 풀이 방법 문자열의 앞과 뒤를 비교하며 회문인지 검사한다. 만약 탐색 중 앞의 문자 또는 뒤의 문자를 지웠을 때, 회문이 될 수 있는 가능성이 있다면 앞의 문자 또는 뒤의 문자를 지우고, 탐색하지 않은 나머지 문자열이 회문인지를 확인한다. 문자열 전체가 회문일 때 0을 반환. 문자를 하나 지웠을 때 나머지 문자열이 회문이 된다면 1을 반환. 문자를 하나 지웠을 대 나머.. 2022. 8. 31.