알고스팟 문제 링크: https://algospot.com/judge/problem/read/HABIT
문자열이 주어졌을때, 해당 문자열의 부분 문자열중 k번 이상 등장하는 문자열을 '말버릇'이라고 한다.
가장 긴 말버릇의 길이를 구하는 문제이다.
먼저 주어진 배열의 접미사 배열들을 사전순으로 나열한다. 그리고 어떤 부분 문자열 X가 출현하는 위치가 K군데 있다고 하자.
X는 K개의 접미사의 접두사가 된다. 이들 접미사는 항상 앞서 사전순으로 정렬한 접미사 배열에 인접하게 정렬됬어야 한다.
코드 원본: https://github.com/sbl133/JongmanBook/blob/main/20.%20string/HABIT.cpp
댓글을 통한 코드리뷰, 질문, 지적 언제든 환영입니다!
reference: 프로그래밍 대회에서 배우는 알고리즘 문제해결전략2
'Algorithm > algospot' 카테고리의 다른 글
algospot 요새 (문제 ID: FORTRESS) c++ (0) | 2021.10.06 |
---|---|
algospot 트리 순회 순서 변경 (문제 ID: TRAVERSAL) c++ (0) | 2021.10.05 |
algospot 재하의 금고 (문제 ID: JAEHASAFE) c++ (0) | 2021.09.30 |
algospot 외계 신호 분석 (문제 ID: ITES) c++ (0) | 2021.09.28 |
algospot 짝이 맞지 않는 괄호(문제 ID: BRACKETS2) c++ (0) | 2021.09.28 |