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

 

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

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

 

13322번: 접두사 배열

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

www.acmicpc.net

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

 

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

 

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

#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