어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미한다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"이다.
문자열 str
이 매개변수로 주어질 때, str
의 모든 접미사를 사전순으로 정렬한 문자열 배열을 return
하는 solution
함수를 작성하는 문제이다.
const solution = (str) => Array.from(str, (_, i) => str.slice(i)).sort();
Array.from(str);
// [ 'b', 'a', 'n', 'a', 'n', 'a' ]
str
의 각 문자를 요소로 하는 배열을 생성한다.Array.from(str).slice(0); // [ 'b', 'a', 'n', 'a', 'n', 'a' ]
Array.from(str).slice(1); // [ 'a', 'n', 'a', 'n', 'a' ]
Array.from(str).slice(2); // [ 'n', 'a', 'n', 'a' ]
Array.from(str).slice(3); // [ 'a', 'n', 'a' ]
// ... 생략
slcie(i)
를 이용해 i
인덱스에서 시작하여 배열의 끝까지 요소를 추출한다.Array.from(str, (_, i) => str.slice(i));
// [ 'banana', 'anana', 'nana', 'ana', 'na', 'a' ]
Array.from
함수는 내부적으로 맵 함수(map function) 기능을 내장하고 있으므로 이를 활용해 각 문자로부터 시작하는 접미사를 생성하며 배열로 반환한다.Array.from(str, (_, i) => str.slice(i)).sort();
// [ 'a', 'ana', 'anana', 'banana', 'na', 'nana' ]
sort()
메서드를 사용하여 생성된 접미사 배열을 사전순으로 정렬한다.