접미사 배열 - 제1회 구름코드챌린지 기출 문제

in #kr6 years ago (edited)

algorithm.png

문제



접미사 배열은 문자열 S의 모든 접미사를 사전순으로 정렬해 놓은 배열입니다.

예를 들어, goorm의 접미사는 goorm, oorm, orm, rm, m 으로 총 5가지가 있고, 이를 사전순으로 정렬하면, goorm, m, oorm, orm, rm이 됩니다.

문자열 S가 주어졌을 때, 모든 접미사를 사전순으로 정렬한 다음 출력하는 프로그램을 작성해보세요.

출처 - 구름


풀이


  1. 문자열 S의 첫번째 캐릭터를 리스트에 삽입합니다.

  2. 문자열 S의 첫번째 캐릭터를 제거합니다.

  3. 문자열의 길이가 0이 될때까지 반복합니다.

  4. 리스트를 알파벳순으로 정렬합니다.

import java.util.*;

public class Hello {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>(); // 접미사들을 저장해 놓을 리스트
        String s = "goorm"; // 주어진 문자열 S

        iterate(s, list); // 함수 실행
        Collections.sort(list); // 알파벳순 정렬

        System.out.println(list); // 출력
    }

    public static String iterate(String _s, ArrayList _list) {
        // S 의 길이가 0 일때 까지
        if (_s.length() != 0) {
            _list.add(_s); // 리스트에 삽입하고
            return iterate(_s.substring(1), _list); // 재귀 호출
        }

        return "";
    }
}


> java Hello
[goorm, m, oorm, orm, rm]
Sort:  

짱짱맨 호출에 출동했습니다!!