어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다.
문자열 my_string이 매개변수로 주어질 때, my_string의 모든 접미사를 사전순으로 정렬한 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
function solution(my_string) {
let string = [...my_string];
return string.map((v, i, arr) => {
return arr.slice(i).join('');
}).sort();
}
_
로 대체해도 될듯), 현재 인덱스는 i로, 배열 전체를 arr로 세 개의 인자를 받는다. arr.slice(i)
를 통해 인덱스 i부터 배열의 끝까지 부분 배열을 반환한다.join('')
을 통해서 문자열로 변환한 후아~ 배열은 풀어도 풀어도 어렵다. 순서에 집착하느라 ㅋㅋㅋ 처음에 배열을 거꾸로 뒤집고, map() 메서드 안에 return arr.slice(0, i + 1).join('');
를 줘서 풀고 있었다. 뭔가 이상함을 깨닫고 reverse()를 지웠지만... 난 접두사 배열을 만들고 있었다 ^^ 순서에 집착하지 않고 코드를 천천히 다시 생각해보니까 이게 되네 ㅠ slice()
를 자주 써도 계속 헷갈린다. 파이팅...
function solution(my_string) {
return Array.from(my_string)
.map((_, i) => my_string.substring(i))
.sort();
}
Array.from(my_string)
으로 배열로 바꿔줬다.substring(i)
를 사용해서 특정 인덱스부터 끝까지의 부분 문자열을 반환한다. function solution(st) {
var answer = [];
for(let i = 0; i<st.length; i++){
answer.push(st.substr(i,st.length))
}
return answer.sort();
}
st.substr(i, st.length)
는 문자열 st의 인덱스 i부터 끝까지의 부분 문자열을 반환한다.