알고리즘/정렬

프로그래머스 - 가장 큰 수

제이G 2022. 6. 24. 18:44


문제풀이


코드

import java.util.*;
class Solution {
    public String solution(int[] numbers) {
        
        String[] numberArr = new String[numbers.length];
        for (int i=0; i<numbers.length; i++) {
            numberArr[i] = Integer.toString(numbers[i]);
        }
        
        // Anonymous Object
        Arrays.sort(numberArr, new Comparator<String>() {
            //override
            public int compare(String o1, String o2) {
                return (o2+o1).compareTo(o1+o2);
            }
        });
        
        // Lambda Expression
        // Arrays.sort(numberArr, (o1, o2) -> {return (o2+o1).compareTo(o1+o2);});
        
        if (numberArr[0].equals("0")) {
            return "0";
        }
        
        String answer = "";
        for (String s: numberArr) {
            answer += s;
        }
        
        
        
        return answer;
    }
}

 

결과

 


핵심:

1) 정렬기준 바꾸는 방법:

Arrays.sort ( T [ ], Comparator<T> c ) 메소드 사용

구현1 ) 익명객체 사용

Arrays.sort (T [ ], new Comparator<T>( ) {

    @Override

    public int compare(T o1, T o2) {

       return [정렬의도에 맞게 오버라이딩하여 리턴];

    }

} );

 

구현2 ) 람다 사용

Arrays.sort (T [ ], (o1, o2) -> { return [정렬의도에 맞게 오버라이딩하여 리턴]; } );

 

 

2) 예외 Case 고려 !!

대부분의 TC가 맞는데 한두개 틀린거면 전체적인 로직은 맞은것이니 예외 Case 고려해보자.