BOJ 13012 - 접미사 배열 1

image.png

이전에 못풀었던 문제같은데, 다시 풀어보았다.

T<ST < S 이므로 TT는 어떤 문자가 SS보다 작다.

그럼 그냥 SS 중에 aa 가 아닌 문자 중 하나만 1-1 을 해주고 suffix array를 구성해서 같은지 확인하면 되지 않을까?

\Rightarrow라고 생각 했는데 그냥 맞아버렸다.


대략 생각해보면 sa[i]=x, sa[i+1]=y  (0i<n1)sa[i]=x,~sa[i+1]=y~~(0 \le i < n - 1) 라고 하자.

yy의 suffix는 xx의 suffix보다 사전순으로 뒤여야 한다.

그럼 yy의 문자를 11 줄여본다.

이것이 x,yx,y의 접미사들의 사전순서를 유지한다면 그렇게 정답을 만들 수 있다.

이러한 ii가 없다고 하자.

yy의 문자를 11줄였을 때 xx의 사전순보다 작아진다.

그럼 xxyy보다 다시 작아지기 위해 줄여야하는데, 그럼 xx 도 원래 sa[i1]sa[i-1] 보다 11 줄였을 때 작아지는 친구이므로 xx11만 줄여도 sa[i1]sa[i-1] 도 계속 줄여야한다.

이러한 과정이 유한히 반복되어 더 이상 무언갈 줄일 수 없는 상태가 되기 때문에 정답이 없다.

Tags:

Categories:

Updated:

Comments