[프로그래머스] 접미사 배열

badassong·2023년 8월 14일
0

JS

목록 보기
29/31
post-thumbnail

문제

어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다.
문자열 my_string이 매개변수로 주어질 때, my_string의 모든 접미사를 사전순으로 정렬한 문자열 배열을 return 하는 solution 함수를 작성해 주세요.


내가 푼 방법

function solution(my_string) {
    let answer = [];
    for(let i = 0; i < my_string.length; i++) {
   answer.push(my_string.substr(i, my_string.length))
        
    } return answer.sort()
}

Solution 😆

  • Extract Method
  • Replace Loop with Map
  • Extract Variable
    순서로 변경합니다.
  1. 코드의 목적이 분명해지고, generateSuffix 함수를 통해 어떤 작업이 수행되는지 이해하기 쉬워져요.
function ex44SuffixArray(my_string) {
  const generateSuffix = (str, start) => str.slice(start);

  let answer = [];
  for (let i = 0; i < my_string.length; i++) {
    answer.push(generateSuffix(my_string, i));
  }
  return answer.sort();
}
  1. loop를 map 으로 변경해요. 반복하는게 무엇인지 더 쉽게 알 수 있어요.
function ex44SuffixArray(my_string) {
  const generateSuffix = (str, start) => str.slice(start);

  const suffixes = [...my_string].map((_, i) => generateSuffix(my_string, i));

  return suffixes.sort();
}
  1. suffixes 변수를 두어 map의 결과를 저장합니다.
    이 코드가 무엇을 하는지 더 읽기 쉬워져요.
function ex44SuffixArray(my_string) {
  const generateSuffix = (str, start) => str.slice(start);

  const suffixes = [...my_string].map((_, i) => generateSuffix(my_string, i));
  const sortedSuffixes = suffixes.sort();

  return sortedSuffixes;
}
profile
프론트엔드 대장이 되어보쟈

0개의 댓글