티스토리 뷰
문제 링크
https://algospot.com/judge/problem/read/HABIT
접미사 배열을 이용해서 푸는 문제입니다.
접미사 배열이란 문자열에서 나타날 수 있는 모든 접미사들을 사전순으로 정렬해 둔 배열을 말합니다.
banana 라는 문자열의 접미사는 아래와 같이 총 6개가 있습니다.
이 접미사들을 사전순으로 정렬을 하면 a가 가장 먼저오고 na가 가장 마지막에 오게됩니다.
이렇게 정렬된 각 접미사들의 전체 문자열 시작위치가 접미사 배열이 됩니다.
예시에서 접미사 a의 시작위치는 banana의 가장 마지막인 5가 되고
접미사 na의 시작위치는 4가 됩니다.
문제에서 부분 문자열이 k번 이상만큼 여러번 나오려면 항상 인접한 접미사들의 접두사로 나오게됩니다.
따라서 인접한 모든 접미사의 공통 접두사가 k번 이상 나오는지를 접미사 배열을 통해 확인하면 됩니다.
위에서 구한 접미사 배열을 순서대로 살펴보면
1번부터 3번까지의 접미사들의 접두사가 모두 a로 같기 때문에 s에서 가장 많이 나오는 부분 문자열이 됩니다.
문제 링크
'Coding Test > 알고스팟' 카테고리의 다른 글
[C++] 알고스팟/문자열 검색 - Jaeha's Safe (0) | 2020.09.03 |
---|---|
[C++] 알고스팟/문자열 검색 - 팰린드롬 만들기 (0) | 2020.09.02 |
[C++] 알고스팟/문자열 검색 - 작명하기 (0) | 2020.09.01 |
[C++] 알고스팟/탐욕법 - 문자열 합치기 (0) | 2020.08.31 |
[C++] 알고스팟/탐욕법 - Microwaving Lunch Boxes (0) | 2020.08.28 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 합친 lis
- Hadoop
- HiveQL
- 스파크
- 분할정복
- Django
- 코딩인터뷰 완전분석
- HDFS
- 배열과 문자열
- 삼각형 위의 최대 경로 수 세기
- C++
- 종만북
- 삼각형 위의 최대 경로
- pyspark
- python
- Sqoop
- import
- Jaeha's Safe
- 알고스팟
- microwaving lunch boxes
- 백준
- 2225
- 두니발 박사의 탈옥
- 팰린드롬 구하기
- 하이브
- 출전 순서 정하기
- 하둡
- 외발 뛰기
- 완전탐색
- hive
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함