이노폴리스의 생명
시간 제한1초메모리 제한512 MB
DNA 문자열이 주어질 때, i번째 접미사가 i+1번째 접미사보다 사전순으로 작은 위치 i의 개수를 센다.
문제
\mathbb{INNOPOLIS} \~ \mathbb{TIMES}
2016년 12월 18일
이노폴리스에 생명이 있는가?
이노폴리스의 생명은 우주에서 온 물체가 가져왔을지도 모른다. 한 과학자가 이 지역에서 채취한 물의 성분을 조사한 끝에 내린 결론이다. 이상한 DNA 구조가 그를 흥미롭게 했다. 연구에는 수년이 걸릴 것이다...
연구를 앞당기기 위해 그가 당신을 찾아왔다. DNA를 네 가지 염기 A, C, G, T에 대응하는 네 개의 대문자로 이루어진 문자열 로 나타내자. 과학자의 질문은 하나뿐이다. 몇 개의 위치 에서 위치 부터 시작하는 접미사가 위치 부터 시작하는 접미사보다 사전순으로 작은가?
접미사는 문자열의 마지막 문자로 끝나는 연속한 문자의 나열이다. 문자열 자체도 자기 자신의 접미사이다. 예를 들어 ACGC, CGC, GC, C는 모두 문자열 ACGC의 접미사이다.
문자열 가 문자열 보다 사전순으로 작다는 것은, 와 의 처음 개 문자가 같고 인 가 존재하거나, 가 보다 짧으면서 모든 에 대해 라는 뜻이다. 예를 들어 "A" < "G", "AAG" < "AAT", "AGC" < "AGCA"이다.
입력
입력은 라틴 알파벳 대문자 A, C, G, T로만 이루어진 문자열 하나로 주어진다.
문자열의 길이는 을 넘지 않는다.
출력
위치 부터 시작하는 접미사가 위치 부터 시작하는 접미사보다 사전순으로 작은 위치 의 개수를 정수 하나로 출력한다.
힌트
첫 번째 예제에는 그러한 위치가 세 개 있다.
- :
"ACGACA"<"CGACA" - :
"CGACA"<"GACA" - :
"ACA"<"CA"
두 번째 예제에는 두 개뿐이다.
- :
"AATTAA"<"ATTAA" - :
"ATTAA"<"TTAA"