https://programmers.co.kr/learn/courses/30/lessons/42746
function solution(numbers) {
var answer = "";
answer = numbers.map((number) => number.toString());
answer.sort((a, b) => (b + a) - (a + b));
if (answer.every((a) => a === '0')) {
return '0';
} else {
return answer.join('');
}
}
✔ 기본적으로 정렬을 이용하는 문제
✔ .sort()는 return하는 값이 양수이면 순서를 그대로 유지하고 음수이면 순서를 바꿔준다.
💡 문자열을 그대로 연결한수(b+a) - 바꿔 연결한 수(a+b)를 통해 문자열을 연결했을 때 큰 순서대로 배열을 정렬
ex) 입출력 예 2번째에서 b(3) + a(30) - a(30) + b(3) => 330 - 303 = 양수이므로 3 30 순서를 그대로 유지한다.
❗ 놓치기 쉬운 반례
계속 마지막 tc에서 틀렸습니다가 나왔다.
answer.every((a) => a === '0')) 로 문자열로 변환하였을 때 모든 요소가 0인경우는 '0'을 return 해줘야 마지막 tc를 통과할 수 있다
✔ 난이도 : 프로그래머스 기준 LEVEL 2