Algorithm
[백준 Silver 4] 11656 접미사 배열 - Java
Ray
2022. 1. 13. 21:45
문제링크 : https://www.acmicpc.net/problem/11656
11656번: 접미사 배열
첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다.
www.acmicpc.net
접근 과정 :
- 문자열 S를 어떻게 자를지 / 접미사들을 어떻게 정렬시켜서 출력할지 두 가지만 생각하면 된다.
- 문자열을 자르는 방식으로는 substring 메소드와 char를 하나씩 더해주는 방법이 있다.
- 접미사를 정렬하는 방식에는 우선순위 큐와 배열+Arrays.sort / List+Collections.sort 가 있다.
소스 코드 및 결과 :
/*
접미사 배열
*/
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String S = br.readLine();
PriorityQueue<String> sList = new PriorityQueue<>();
for (int i = S.length() - 1; i >= 0; i--) {
sList.add(S.substring(i));
}
StringBuilder sb = new StringBuilder();
while (!sList.isEmpty()) {
sb.append(sList.poll()).append("\n");
}
System.out.println(sb.toString().trim());
}
}