-
https://www.acmicpc.net/problem/1786
1786번: 찾기
첫째 줄에, T 중간에 P가 몇 번 나타나는지를 나타내는 음이 아닌 정수를 출력한다. 둘째 줄에는 P가 나타나는 위치를 차례대로 공백으로 구분해 출력한다. 예컨대, T의 i~i+m-1번 문자와 P의 1~m
www.acmicpc.net
https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%201786
GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드
JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.
github.com
해당 문제는 KMP 알고리즘 문제다.
KMP 알고리즘을 이용해서 해결했으며, pi라는 배열을 만들어서 이용하는데
먼저 p에 대해서 pi 배열을 생성해 준다
pi 배열은 p에 대해서 접두사 접미사에 관해 인덱스를 저장하는 배열이다.
이후 t와 p를 비교하여 주는데 이때 pi 배열을 이용해 비교해 주고 j 값이 p 길이 -1과
같으면 카운트를 1 증가시켜주고 계속 진행한다.
728x90'알고리즘 > Baekjoon' 카테고리의 다른 글
Baekjoon 17144 미세먼지 안녕! JAVA (0) 2021.11.13 Baekjoon 10451 순열 사이클 JAVA (0) 2021.11.12 Baekjoon 12015 가장 긴 증가하는 부분 수열 2 JAVA (0) 2021.11.12 Baekjoon 11286 절댓값 힙 JAVA (0) 2021.11.12 Baekjoon 5525 IOIOI JAVA (0) 2021.11.12 댓글