블로그에서 코드를 보다가 이해가 가지 않는 부분 및 확인받고싶은 부분이 있어서 질문드립니다.
[코드 출처]
https://plzrun.tistory.com/entry/Suffix-Array-ONlogNlgN%EA%B3%BC-ONlogN-%EA%B5%AC%ED%98%84-%EB%B0%8F-%EC%84%A4%EB%AA%85
**사전지식**
vector<int> g : g[i] 는 원래의 문자열 i 인덱스의 순위를 나타냅니다.
vector<int> ng : 다음 g를 갱신하기 위한 ng
vector<int> cnt : 기수정렬용 cnt
**질문 목록**
1. 10번째줄 lim은 기수정렬때 cnt 배열의 크기를 사용하기 위함으로 이해했습니다.
257의 의미는 모든 char형을 담겠다는 표현같은데 왜 n+1이랑 max를 취하나요?
2 . orderToidx 배열은 기수정렬을 1차적으로 한 idx를 나타내는데, 배열의 크기를 n+1까지 해야하나요? n까지면 오류가 발생하나요?
3. 30번째줄 ng[sfx[0]]=1 에서 1은 g[n]. 즉 빈 문자열을 최우선순위(0)로 두기위해서 1로 적은것이 맞나요?
댓글을 작성하려면 로그인해야 합니다.
devbelly 3년 전
블로그에서 코드를 보다가 이해가 가지 않는 부분 및 확인받고싶은 부분이 있어서 질문드립니다.
[코드 출처]
https://plzrun.tistory.com/entry/Suffix-Array-ONlogNlgN%EA%B3%BC-ONlogN-%EA%B5%AC%ED%98%84-%EB%B0%8F-%EC%84%A4%EB%AA%85
**사전지식**
vector<int> g : g[i] 는 원래의 문자열 i 인덱스의 순위를 나타냅니다.
vector<int> ng : 다음 g를 갱신하기 위한 ng
vector<int> cnt : 기수정렬용 cnt
**질문 목록**
1. 10번째줄 lim은 기수정렬때 cnt 배열의 크기를 사용하기 위함으로 이해했습니다.
257의 의미는 모든 char형을 담겠다는 표현같은데 왜 n+1이랑 max를 취하나요?
2 . orderToidx 배열은 기수정렬을 1차적으로 한 idx를 나타내는데, 배열의 크기를 n+1까지 해야하나요? n까지면 오류가 발생하나요?
3. 30번째줄 ng[sfx[0]]=1 에서 1은 g[n]. 즉 빈 문자열을 최우선순위(0)로 두기위해서 1로 적은것이 맞나요?