[js]정렬(Sort)

힐링힐링·2023년 4월 15일
0

문제 1 (가장큰수)

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

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

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

제한 사항
numbers의 길이는 1 이상 100,000 이하입니다.
numbers의 원소는 0 이상 1,000 이하입니다.
정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.

핵심

  1. 문자열로 바꾼뒤 정렬
  2. input이 [0, 0, 0]인경우도 생각해줘야함.

코드 1

function solution(numbers) {
    var answer = '';
    
    //1. string 형태로 바꾼다 안바꾸면 합쳐짐
    for ( i in numbers){
        numbers[i] = String(numbers[i])
    }
    //2. 문자열을 합한 숫자를 정렬한다.
    numbers.sort((a,b) =>{
                if(a.charAt(0) ==0){
                    a= 0;
                }
                 if(b.charAt(0) ==0){
                    b= 0;
                }
                 if (a+b> b+a){ return -1}
                else if (a+b < b+a){return 1}
                else if (a+b == b+a){ return 0}
    });
    //3. 모두가 0인것도 생각해줘야함..
    if(numbers.filter((e)=>e=='0').length == numbers.length){
        numbers=[0];
    }
    
    //4. 이어 붙이기.
    for(let i in numbers){
        answer += numbers[i]; 
    }
    return answer;
}         
                 
profile
블로그 이전합니다 https://james-kim-tech.tistory.com/

0개의 댓글