본문 바로가기

백준/실버

[백준 11656번] 접미사 배열 (C++)

문제링크 : https://www.acmicpc.net/problem/11656

 

11656번: 접미사 배열

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

www.acmicpc.net

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = 987654321;

string s;
vector<string>v;

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

    cin >> s;
    for(int i=0; i<s.size(); i++)
    {
        string tmp = s.substr(i, s.size()); //문자열 자르기
        v.push_back(tmp);
    }
    sort(v.begin(), v.end());
    
    for(int i=0; i<v.size(); i++) cout << v[i] << "\n";

    return 0;
}

 

주어진 문자열에 대해 우선 접미사를 구해 벡터에 담아준다.

substr 함수를 통해 한 칸씩 범위를 줄여 잘라가며 담아준다.

 

이후에 담았던 벡터를 정렬하고 각 요소를 출력해주면 된다.