코딩 테스트

(Java) 프로그래머스 가장 큰 수

로승리 2021. 10. 19. 18:37

문제가 복잡하지 않아서 만만하게 봤다가 꽤나 시간이 걸렸다.

처음에 숫자를 문자로 변환하는 방법을 생각하지 못하고 삽질을 하다가

다른분들의 코드를 보고 Comparator 인터페이스를 이용해서 풀었다.

 


최종 코드

import java.util.Arrays;
import java.util.Comparator;
class Solution {
    public String solution(int[] numbers) {
        StringBuilder sb = new StringBuilder();
		
		// 숫자를 문자열로 변환
		String[] temp = new String[numbers.length];
		for(int i=0; i<numbers.length; i++) {
			temp[i] = Integer.toString(numbers[i]);
		}

		// 정렬 comparator를 이용해서 비교
		Arrays.sort(temp, new Comparator<String>() {

			@Override
			public int compare(String o1, String o2) {
				return ((o2 + o1).compareTo(o1 + o2));
			}
			
		});
		
		// 0이 여러개일경우 0으로 리턴
		if(temp[0].equals("0")) {
			return "0";
		}
		
		for(int i=0; i<temp.length; i++) {
			sb.append(temp[i]);
		}
        
        return sb.toString();
    }
}