다음과 같이 쉼표로 구분된 문자열이 있다고 가정해 보겠습니다. -
const str = 'JAY, ROB';
우리는 그러한 문자열 하나를 취하는 JavaScript 함수를 작성해야 합니다. 이 함수는 앞의 알파벳이 항상 다음보다 큰 문자열의 단어에서 새 단어를 만들 수 있습니다(예:A는 B보다 큼)
예를 들어 위의 문자열에서 JAY의 첫 글자를 ROB의 첫 글자와 비교하려고 합니다.
R과 비교할 때 J가 먼저 오기 때문에 새 단어의 첫 번째 알파벳은 J가 됩니다. 두 번째와 비교하면 A가 R보다 먼저 오기 때문에 두 번째 알파벳이 되므로 세 번째 알파벳도 마찬가지로 R이 됩니다.
따라서 마지막 단어는 'JAROBY'가 됩니다.
이 예에서는 두 단어만 포함된 문자열을 사용했지만 두 단어 이상에서도 작동할 수 있는 솔루션을 작성해야 합니다.
예시
이에 대한 코드는 -
const str = `JAY,ROB,APPLE,AAKO`; const specialSort = (str = '') => { let len = str.replace(/,/g, "").length; const sorter = (str, b) => { if(str === "" || str === null) return 1; if(b === "" || b === null) return −1; if(str === b) return 0; return str < b ? −1 : 1; }; let res = ""; let sorted = str.split(",").sort(sorter); while (res.length < len){ res += sorted[0][0]; sorted[0] = sorted[0].slice(1); sorted = sorted.sort(sorter); } return res; }; console.log(specialSort(str));
출력
콘솔의 출력은 -
AAAJAKOPPLEROBY