시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
---|---|---|---|---|---|
2 초 | 512 MB | 212 | 40 | 28 | 20.144% |
윤표는 만사가 귀찮은 친구다. 그래서 문자열을 입력할 때, 중복되는 부분이 있으면, 앞서 나온 부분 문자열을 복사해서 붙여넣어야 마음이 편안하다.
윤표는 매번 자신이 위치를 직접 기억하여 붙여넣다가, 복사붙여넣기를 도와주는 프로그램을 만들려고 한다.
문자열이 주어졌을 때, 해당 문자열에서 겹치지 않게 두 번 이상 반복되는 가장 긴 부분 문자열과 해당 문자열의 길이를 출력하는 프로그램을 작성하시오.
알파벳 소문자로 이루어진 문자열이 주어진다. 주어지는 문자열의 길이는 1 이상 200,000 이하이다.
주어진 문자열에서 겹치지 않게 (disjoint) 두 번 이상 등장하는 가장 긴 문자열의 길이를 공백을 기준으로 출력한다.
단, 조건을 만족하는 문자열이 없는 경우 -1을 출력한다.
applebananacarrotapple
5
apple이 1~5번째, 18~22번째 글자에서 두 번 나타납니다.
abcdefghijklmnop
-1
반복되는 문자열이 없습니다.
dotzsdultvofkudispdoowrhwldssvtzldwiyihpjwsxfdvjhbdubeiojlcnzjazvtzldwiyihpjwsxfdvjhbdubvxgrwe
24
vtzldwiyihpjwsxfdvjhbdub가 30~53번째, 65~88번째 글자에서 두 번 나타납니다.
aaaaaaa
3
aaa가 1~3번째, 4~6번째 글자에서 두 번 나타납니다.
University > UNIST > 제 1회 UNIST 알고리즘 프로그래밍 경시대회 Uni-CODE G번