본문 바로가기
Algorithm/Programmers

[프로그래머스 JS] 가장 큰 수

by 그랴 2022. 12. 15.

문제

더보기

문제 설명

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

예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.

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

제한 사항
  • numbers의 길이는 1 이상 100,000 이하입니다.
  • numbers의 원소는 0 이상 1,000 이하입니다.
  • 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.
입출력 예numbersreturn
[6, 10, 2] "6210"
[3, 30, 34, 5, 9] "9534330"

풀이 과정

  1. 처음엔 진짜 어렵게 풀었다. 몇글자인지까지 생각해서... 그랬더니 테케 다 틀ㄹㅕㅆ다. 아무리 생각해도 다른 방법이 생각나지 않아서 구글링해봤다가 허무해짐.
  2. 문자열 두개 합쳐본 다음에 더 큰 순서대로 리턴해주면 되는 거였음...
  3. 근데 문자열 합치면 문자열인데 어케 대소 비교를 하는 거지....? 했는데 하더라.응.... 난 아직도 자바스크립트를 잘 모르겠다 ㅎㅎㅎㅎ 

 

사용한 메서드

  • sort, map

전체 코드

function solution(numbers) {
    var answer = '';
    numbers = numbers.map((n)=> n + '');
    numbers.sort((a,b)=>{
        return (b+a) - (a+b);
    })
    
    numbers[0] === '0' ? answer = '0' : answer = numbers.join('');
    
    return answer;
}