Algorithm
백준 11656번 <접미사 배열>
seungh2
2022. 5. 27. 14:30
백준 알고리즘 11656번
https://www.acmicpc.net/problem/11656
11656번: 접미사 배열
첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다.
www.acmicpc.net
11656번
문자열 S가 주어질 때, 모든 접미사를 사전순으로 정렬하여라.
입력으로 문자열 S가 주어진다.
출력으로는 문자열 S의 모든 접미사를 사전순으로 정렬하여 출력한다.
문제 해결
문자열 S의 접미사는 i번째 문자를 시작으로 하는 문자열 모두를 의미한다.
예를 들어 문자열 S가 "hello"라고 할 때,
0번째 문자를 시작으로 하는 문자열 "hello"
1번째 문자를 시작으로 하는 문자열 "ello"
2번째 문자를 시작으로 하는 문자열 "llo"
3번째 문자를 시작으로 하는 문자열 "lo"
4번째 문자를 시작으로 하는 문자열 "o"
-> 이렇게 구한 접미사들을 사전순으로 정렬하여 출력하면 된다.
접미사를 구하는 방법은 substring()을 사용하면 된다.
사전순으로 정렬하는 것은 Arrays.sort()를 사용하면 된다.
코드
package bj11656;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
int len = input.length();
String[] suffix = new String[len];
for(int i = 0; i < len; i++) {
suffix[i] = input.substring(i);
}
Arrays.sort(suffix);
for(int i = 0; i < len; i++) {
System.out.println(suffix[i]);
}
}
}
결과
728x90