문제 출처 - Baekjoon Online Judge
문제는 여기
[문제]
접미사 배열은 문자열 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. 입력받은 문자를 substring으로 잘라 배열에 담아준다.
2. 담긴 배열을 정렬해준다.
[접근]
1. substring으로 문자열을 잘라 접미사 배열을 만들고 Arrays.sort를 통해서 정렬을 하면 될 것이라고 생각했다.
[코드]
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main_S4_11656 {
static String s;
static String[] str;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
s = br.readLine();
str = new String[s.length()]; // 배열 생성
for (int i = 0; i < s.length(); i++) {
str[i] = s.substring(i); // 앞에서 부터 잘라서 접미사 배열에 넣기
}
// 접미사 배열 정렬하기
Arrays.sort(str);
for (int i = 0; i < str.length; i++) {
System.out.println(str[i]);
}
}
}
'문제 풀이 > Baekjoon' 카테고리의 다른 글
[백준] S2 11048번 이동하기 (JAVA) (0) | 2022.06.06 |
---|---|
[백준] S2 1535번 안녕 (JAVA) (0) | 2022.06.04 |
[백준] S1 1254 팰린드롬 만들기 (JAVA) (0) | 2022.02.26 |
[백준] B5 2338번 긴자리 계산 (JAVA) (0) | 2022.02.06 |
[백준] S5 15233번 Final Score (JAVA) (0) | 2022.02.05 |