문제링크 : 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());
}
}
P.S
'Algorithm' 카테고리의 다른 글
[백준 Silver 3] 1748 수 이어 쓰기 1 - Java (0) | 2022.01.16 |
---|---|
[백준 Silver 2] 10451 순열 사이클 - Java (0) | 2022.01.14 |
[백준 Gold 2] 1766 문제집 - Java (0) | 2022.01.13 |
[백준 Gold 3] 14890 경사로 - Java (0) | 2022.01.12 |
[백준 Gold 4] 4179 불! - Java (0) | 2022.01.12 |