[Programmers] 가장 큰 수 - 정렬

동민·2021년 3월 11일
import java.util.Arrays;
import java.util.Comparator;

// 가장 큰 수 - 정렬
public class MaxNum {
	
	// A+B , B+A 로 앞 뒤로 비교해가며 정렬하여 해결
	public String solution(int[] numbers) {
		String answer = "";

		String[] arr = new String[numbers.length];
		for (int i = 0; i < arr.length; i++) {
			arr[i] = numbers[i] + "";
		}
		Arrays.sort(arr, new Comparator<String>() { // 만약 Comparator<Integer> 로 구현하려면 arr는 int형이 아닌 Integer형으로 변환해야 함.
			public int compare(String o1, String o2) {

				String s1 = o1 + o2;
				String s2 = o2 + o1;

				if (s1.compareTo(s2) > 0) {
					return -1;
				} else if (s1.compareTo(s2) < 0) {
					return 1;
				}
				return 0;
			}
		});
		for (String ele : arr) {
			answer += ele;
		}
		return answer.charAt(0) == '0' ? "0" : answer; // 배열의 모든 값이 0일 때 "000..0" 으로 리턴되는 예외를 처리해주어야 함
	}

	public static void main(String[] args) {

		MaxNum s = new MaxNum();
		int numbers1[] = { 6, 10, 2 };
		int numbers2[] = { 3, 30, 34, 5, 9 };
		int numbers3[] = { 0, 0, 0 };

		System.out.println(s.solution(numbers1)); // 6210
		System.out.println(s.solution(numbers2)); // 9534330
		System.out.println(s.solution(numbers3));

	}

}
Arrays.sort(array, new Comparator<Integer>(){ ... 일 때 array 가 만약 int 타입이면 컴파일 에러가 발생한다.
int -> Integer타입으로 변환 하여 구현
profile
BE Developer

0개의 댓글