Skip to content

Latest commit

 

History

History
75 lines (54 loc) · 1.86 KB

가장-큰-수.md

File metadata and controls

75 lines (54 loc) · 1.86 KB

가장 큰 수

문제 링크

문제 설명

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

입출력 예시

	Input: [6, 10, 2]
	Output: "6210"
	Explanation:  주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210

문제 풀이

이 문제의 정렬조건은 두개의 값을 붙었을 때 어떤 숫자가 사전적으로 더 큰지를 봐야한다. 정렬 조건을 재정의 해줘야 한다. 숫자 자료형으로는 정렬을 할 수 없으니 숫자를 문자로 만들면 사전식 정렬 되므로 해당 정렬을 할 수 있다. 맨 앞이 0인 경우 예외처리를 해준다.

풀이 코드 Java

import java.util.*;
class Solution {
    public String solution(int[] numbers) {

		int len = numbers.length;
		String[] strArray = new String[len];
		for (int i = 0; i < len; i++) {
			strArray[i] = String.valueOf(numbers[i]);
		}

    //내림차순으로
		Arrays.sort(strArray, new Comparator<String>() {
			@Override
			public int compare(String o1, String o2) {
				return ((o2 + o1).compareTo(o1 + o2));
			}
		});

		if(strArray[0].equals("0")) {
			return "0";
		}

    StringBuilder answer = new StringBuilder();
		for (String str : strArray) {
			 answer.append(str);
		}
		return answer.toString();
    }
}

풀이 코드 JavaScript

function solution(numbers) {
  
    const str = numbers.map(number => String(number))

    str.sort((a,b) => { 
      if(a+b < b+a) return 1;
      if(a+b > b+a) return -1;
      if(a === b) return 0;
      else return -1;
    } );

    return str[0] == '0' ? '0' :str.join('');
}