본문 바로가기
Algorithm

[백준 Silver 4] 11656 접미사 배열 - Java

by Ray 2022. 1. 13.

문제링크 : 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