문제 설명
어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다.
문자열 my_string이 매개변수로 주어질 때, my_string의 모든 접미사를 사전순으로 정렬한 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
my_string은 알파벳 소문자로만 이루어져 있습니다.
1 ≤ my_string의 길이 ≤ 100
입출력 예
my_string | result |
---|---|
"banana" | ["a", "ana", "anana", "banana", "na", "nana"] |
"programmers" | ["ammers", "ers", "grammers", "mers", "mmers", "ogrammers", "programmers", "rammers", "rogrammers", "rs", "s"] |
입출력 예 설명
function solution(my_string) {
var result = [];
// 문자열의 알파벳 중 중복되는 것은 제거하고 모두 출력
let regex = /[a-z]/g;
let str = new Set(my_string.match(regex))
// ex. str = [ a, b, n]
for (let i of [...str]) {
let indicies = [];
let el = i;
// 각 알파벳 인덱스 위치 찾기
let indx = my_string.indexOf(el);
// ex. my_string의 'a' 인덱스값 = 1
// 같은 알파벳이 여러 개일 수 있으므로 모든 위치 찾아주기
while (indx !== -1) {
indicies.push(indx);
indx = my_string.indexOf(el, indx + 1)
}
// ex. indicies = [1, 3, 5]
// indicies[index]부터 끝까지 문자열 잘라 result배열에 push
for (let n = 0; n < indicies.length; n++) {
let sliced = my_string.split('').splice(indicies[n], my_string.length);
result.push(sliced.join(''))
}
// ex. result = ['anana', 'ana', 'a']
}
// 마지막으로 사전 순서대로 정렬해주기
return result.sort()