11656번: 접미사 배열

문제:

접미사 배열은 문자열 S의 모든 접미사를 사전순으로 정렬해 놓은 배열이다.

baekjoon의 접미사는 baekjoon, aekjoon, ekjoon, kjoon, joon, oon, on, n 으로 총 8가지가 있고, 이를 사전순으로 정렬하면, aekjoon, baekjoon, ekjoon, joon, kjoon, n, on, oon이 된다.

문자열 S가 주어졌을 때, 모든 접미사를 사전순으로 정렬한 다음 출력하는 프로그램을 작성하시오.

입력:

첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다.

풀이:

코드:

#include <iostream>
#include <algorithm>

using namespace std;

int main(){
	string word, answer[1000];
	//입력 
	getline(cin, word);
	for(int i = 0; i < word.size(); i++){
		//i부터 시작함으로써 앞에 접두사를 날릴 수 있음 
		for(int j = i; j < word.size(); j++){
			//정답에 문자 한개 저장 
			answer[i] += word[j];
		}
	}
	//알파벳 순으로 정렬 #include <algorithm> 필요함 
	sort(answer, answer+word.size());
	//출력
	for(int i = 0; i < word.size(); i++){
		cout<<answer[i]<<endl;
	}
}