sortAndStar.js (8kyu 57)

Codewars 알고리즘 풀이


Problem

  • You must sort it alphabetically and then return the first value.
    • 알파벳순으로 정렬하고, 첫 번째 값을 반환한다.
  • The returned value must be a string, and have *** between each of its letters.
    • 반환된 값은 문자열(string)이어야 하고, 각 글자 사이에 ***가 있어야 한다.


Solution 01

function sortAndStar(arr) {
  let firstElement = arr.sort()[0];
  let result = firstElement[0];
  
  for (let i = 1; i < firstElement.length; i++) {
    result += '***' + firstElement[i];
  }
  return result;
}

sortAndStar(['c', 'bb', 'aaa']);     // a***a***a
sortAndStar(['ape', 'ace', 'abc']);  // a***b***c

sort() 메소드

배열의 element를 정렬한 후, 그 배열을 반환한다.


Solution 02

function sortAndStar(arr) {
  return arr.sort()[0].split('').join('***');
}

sortAndStar(['c', 'bb', 'aaa']);     // a***a***a
sortAndStar(['ape', 'ace', 'abc']);  // a***b***c

split() 메소드

문자열을 부분 문자열로 분할하고, 새 배열로 반환한다.

join() 메소드

배열의 모든 element를 결합하고, 새 문자열로 반환한다.


Solution 03

function sortAndStar(arr) {
  return arr.sort()[0].replace(/(.)(?!$)/g, i => i + '***');
}

sortAndStar(['c', 'bb', 'aaa']);     // a***a***a
sortAndStar(['ape', 'ace', 'abc']);  // a***b***c

정규표현식 (RegExp)

replace(): 대응되는 문자열을 찾아 다른 문자열로 치환한다.

.: 개행 문자를 제외한 모든 문자와 대응

x(?!y): y가 뒤따라오지 않는 x에만 일치

$: 입력의 끝 부분에 대응

g: 전역 검색