[프로그래머스] 코딩테스트 연습 - 38

krkorklo·2022년 2월 7일
0

프로그래머스

목록 보기
38/78

level 2 - 가장 큰 수

0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.

입출력 예시
numbers : [6, 10, 2]
-> "6210"

처음에 dfs로 풀려다가 자꾸 런타임 에러나길래 깔끔하게 포기했다.

function solution(numbers) {
    numbers.sort((a, b) => ''+a+b < ''+b+a ? 1 : -1);
    
    return String(Number(numbers.reduce((acc, val) => acc + val, '')));
}

이렇게 푸는데 Number type을 다시 String으로 변환하려니까 오버플로우가 나는지 테스트케이스 10개가 모조리 틀리더라
껄껄
...

function solution(numbers) {
    numbers.sort((a, b) => ''+a+b < ''+b+a ? 1 : -1);
    
    return numbers.reduce((acc, val) => acc + val, '').replace(/^0{1,}/, '') || "0";
}

replace로 해결했다.

0개의 댓글