https://programmers.co.kr/learn/courses/30/lessons/42746
function solution(numbers) {
var answer = numbers.map((number) => number.toString()).sort((a, b) => (b + a) - (a + b)).join("");
return answer.replace(/^0+/, "0");
}
var numbers = [3, 30, 34, 5, 9];
console.log(solution(numbers));
처음에는 순열 문제인줄 알고 순열로 풀어서 가장 큰 값을 뽑아 내었으나 시간초과에 걸렸다.
아주 단순한 문제이다.
애초에 정렬을 할때에 두개 문자를 합칠때 앞뒤로 합치고 더 큰문자를 반환해서 문자를 정렬한다. 그러면 자동으로 문자를 결합했을때 가장 큰수가 나오게된다. 그리고 그숫자를 join
함수로 붙인다.
마지막으로 답이 맨앞의 문자가 0
일 경우에는 가장 큰수가 0
일 경우가 되므로 그뒤 문자는 0000...
일 것이다. 따라서 해당 경우 정규식을 0
으로 변경한다.
문자.replace(정규식, 대체할 문자열)
: 문자
에서 정규식
에 해당하는 패턴은 대체할 문자열
로 대체한다.