목표

문제 요구사항

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.

문제 풀이

정수를 이여 붙여 만들수 있는 가장 큰수 찾기

  1. 데이터 추상화
    받은 정수를 이어 붙이기 위한 변수 하나만 생각하자.

  2. 정렬하기.
    모든 경우를 다하는 방법으로 js에서 제공하는 sort 함수를 사용하여 구현해 보자. 각 문자들을 두 개씩 역으로 합쳐 크기를 비교해보자. 가령 [6, 10, 2]인 경우 첫째 둘째 값이 6, 10을 뽑고 역으로 합쳐 크기를 비교하자. 610 > 106 이므로 순서를 바꾸지 않는다. 다음으로 둘째 셋째 값인 10, 2를 뽑고 동일하게 진행하자. 102 > 210 이므로 순서를 바꾼다. [6, 2, 10] 다시 앞의 두개를 선택하고 동일하게 진행하자. [ 6, 2 ] 62 > 26 이므로 순서를 바꾸지 않는다. 이에따라 결과값은 [ 6, 2, 10] 이 된다.

  3. 데이터 형변환.

    위와같이 정렬을 하기 위해서 적절한 형변환이 필요하다.

     const answer = numbers.sort((a, b) => Number([b,a].join('')) - Number([a,b].join(''))).join('');
     return answer[0] === "0" ? "0" : answer
    

결론