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

최대 1 분 소요

문제 링크

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


풀이 과정

순열을 구해 문자열을 더해나가는 방식으로 접근했지만 시간초과가 났습니다.

배열의 앞 요소부터 순서대로 이어 붙였을 때 가장 큰 수가 되도록 Comparator 클래스를 재정의해 사용했습니다.

테스트 케이스 11의 예외를 처리하기 위해 문자열의 맨 앞이 ‘0’이면 0을 리턴하도록 했습니다.


코드

import java.util.Arrays;
import java.util.Comparator;

public class Main {
    public static String solution(int[] numbers) {
        String answer = "";

        String[] arr = new String[numbers.length];
        for (int i = 0; i < numbers.length; i++)
            arr[i] = String.valueOf(numbers[i]);

        Arrays.sort(arr, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return (o2 + o1).compareTo(o1 + o2);
            }
        });

        if (arr[0].equals("0"))
            return "0";

        for (String s : arr)
            answer += s;

        return answer;
    }

    public static void main(String[] args) {
        int[] numbers = {6, 10, 2};
//        int[] numbers = {3, 30, 34, 5, 9};
//        int[] numbers = {12, 121};
//        int[] numbers= {0, 0, 0};

        System.out.println(solution(numbers));
    }
}

카테고리:

업데이트:

댓글남기기