11656번: 접미사 배열

첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다.

www.acmicpc.net

문제 간단설명)

한 단어를 여러개로 쪼개고 사전순으로 정렬

 

풀이)

입력받은 단어를 substring() 이용해서 여러 접미사로 나눠주고,

이를 list에 넣어준다.

Collections.sort()안에 이 list를 넣어서 정렬한다.

Collections.sort()에 별다른 comparator 없이 리스트만 들어있다면 

그 list를 사전순으로 정렬한다.

만약 자신만의 방식으로 정렬하고 싶다면

comparator를 구현하여  Collections.sort()에 넣어주면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
 
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        String input = br.readLine();
        ArrayList<String> li = new ArrayList<>();
        for(int i = 0; i < input.length(); i++){
            li.add(input.substring(i));
        }
        Collections.sort(li);
 
        for(String s:li)
            bw.write(s+"\n");
        bw.flush();
        bw.close();
    }
}
cs

+ Recent posts