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

Updated:

11656번 접미사 배열

1. 문제 정보

백준 온라인 저지 [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보다 작거나 같다.

출력

첫째 줄부터 S의 접미사를 사전순으로 한 줄에 하나씩 출력한다.

예제 입력1

baekjoon
*

예제 출력1

aekjoon
baekjoon
ekjoon
joon
kjoon
n
on
oon

시간 / 메모리 제한

1초 / 256MB


2. 생각

  1. 입력 받은 문자열 s의 모든 접미사를 만드는 방법은 i를 늘려가며 부분 문자열을 만듭니다.

  2. 부분 문자열을 만들며 이 문자열들을 배열에 저장합니다.

  3. 부분 문자열을 모두 저장한 뒤 헤더의 sort() 함수를 통해 사전식 배열로 정렬합니다.

3. 소스코드 (C++)


터미널의 입출력 화면 예제1

11656_1

터미널의 입출력 화면 다른 예제

11656_2 11656_3