※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 13322번 문제인 접두사 배열이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/13322 

 

13322번: 접두사 배열

접미사 배열(suffix array)이란, 어떤 문자열의 모든 접미사를 사전 순으로 정렬한 뒤, 각 접미사의 시작 위치를 기록한 배열을 의미한다. 예를 들어 'banana' 라는 문자열에 대해 접미사 배열을 구한

www.acmicpc.net

주어진 문자열의 접두사들의 모임은 \(s\)의 0번째 문자부터 \(i\)번째 문자까지의 부분문자열 \(s_i\)들의 모임과 같음을 관찰하자. 또한, \(s_i\)와 \(s_j\) (단, \(i<j\)에 대하여 \(s_j\)의 앞 \(i+1\)글자로 이루어진 문자열은 \(s_i\)와 항상 같으므로 사전순을 기준으로 \(s_i<s_j\)가 항상 성립한다. 즉, \(i<j\)이면 \(s_i<s_j\)가 성립한다.

 

따라서 문자열의 길이를 \(N\)이라 할 때 0부터 \(N-1\)까지의 정수를 차례대로 출력하는 것으로 문제를 해결할 수 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <string>
using namespace std;

string s; int slen;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> s;
	slen = s.length();

	for (int i = 0; i < slen; i++) cout << i << '\n';
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 28353 // C++] 고양이 카페  (0) 2023.12.12
[BOJ 10193 // C++] Word Swap  (1) 2023.12.11
[BOJ 10195 // C++] Underwater Trip  (0) 2023.12.09
[BOJ 10194 // C++] Aligned Calender  (0) 2023.12.08
[BOJ 28214 // C++] 크림빵  (0) 2023.12.07

+ Recent posts