프로그래머스 Lv.2: 가장 큰 수

Steve·2021년 11월 25일
0

https://programmers.co.kr/learn/courses/30/lessons/42746

고민하다가 사람들의 질문에서 힌트를 얻어서 푼 문제이다.
핵심은 내림차순 정렬 시 배열의 두 수를 붙여서 비교하는 것이다.
막상 엄청 간단한 아이디어인데 막상 생각해내기가 어려웠다.

function solution(numbers) {
    var answer = '';
    // 숫자를 문자열로 바꾼다.
    numbers = numbers.map(e=>String(e));
    if (numbers.every(e => e === '0')) return '0';
    // 9, 8 => 98,89
    // 9, 90 => 909, 990
    // 30, 3024 => 303024, 302430
    // 10, 1000 => 101000, 100010
    numbers.sort((a,b)=>{
        // 두 수를 붙여서 비교한다.
        let c1 = Number(a+b);
        let c2 = Number(b+a);
        return c2 - c1;
    })
    answer = numbers.join('');
    return answer;
}
profile
게임과 프론트엔드에 관심이 많습니다.

0개의 댓글