백준코딩일기
11656) 접미사 배열 c++
nari___
2020. 12. 1. 13:23
문제 ) www.acmicpc.net/problem/11656
11656번: 접미사 배열
첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다.
www.acmicpc.net
풀이 )
접미사를 보면, baekjoon, aekjoon, ekjoon, kjoon, joon, oon, on, n 으로 총 8가지이다.
입력받은 문자열 baekjoon 인데, 가장 앞에 한 글자씩 지우면서 접미사를 만들었다는 것을 알 수 있다.
1. 문자열을 입력받아서 문자열의 길이를 len 이라는 변수에 저장해 둔다.
2. 문자열을 substr() 함수를 이용하여 앞에 한 글자씩 지워서 str [] 배열에 저장한다.
str[i] = input.substr(i, len);
substr(a, b) => 문자열의 a번째 글자부터 b까지 글자만 추출한다.
3. 모든 접미사를 사전순으로 정렬한다.
sort (str, str+len) => str 배열을, 배열 전체를 정렬한다.
코드 )
#include <iostream>
#include <algorithm>
using namespace std;
string input;
string str[1000];
int main(void)
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> input;
int len = input.length();
for(int i=0; i<len; i++){
str[i] = input.substr(i, len);
}
sort(str, str+len);
for(int i=0; i<len; i++) {
cout << str[i] <<"\n";
}
}