접미사 배열 - 제1회 구름코드챌린지 기출 문제
문제
접미사 배열은 문자열 S의 모든 접미사를 사전순으로 정렬해 놓은 배열입니다.
예를 들어, goorm의 접미사는 goorm, oorm, orm, rm, m 으로 총 5가지가 있고, 이를 사전순으로 정렬하면, goorm, m, oorm, orm, rm이 됩니다.
문자열 S가 주어졌을 때, 모든 접미사를 사전순으로 정렬한 다음 출력하는 프로그램을 작성해보세요.
출처 - 구름
풀이
문자열 S의 첫번째 캐릭터를 리스트에 삽입합니다.
문자열 S의 첫번째 캐릭터를 제거합니다.
문자열의 길이가 0이 될때까지 반복합니다.
리스트를 알파벳순으로 정렬합니다.
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]
짱짱맨 호출에 출동했습니다!!