가장 큰 수

_021119·2021년 4월 13일
0

알고리즘

목록 보기
5/9

public String solution(int[] numbers) {
       			String answer = "";
    			String[] result = new String[numbers.length];

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

    			// 정렬
    			Arrays.sort(result, new Comparator<String>() {

    				@Override
    				public int compare(String o1, String o2) {

    					return ((o2 + o1).compareTo(o1 + o2));
    				}
    			});

    			//0만 있을 경우 [0,0,0,0] 0을 리턴
    			if(result[0].equals("0")) {
    				return "0";
    			}

    			for(int i = 0; i < result.length; i++) {
    				answer += result[i];
    			}
        return answer;
    }

comparator에 대해 공부 할 수 있는 시간 이었다.

어려운 문제였다!.

오름차순 : (o2+o1).compareTo(o1+o2)
내림차순 : (o1+o2).compareTo(o2+o1)

ex) 5와 9 비교시..

("9"+"5").compareTo("5"+"9")
95.compareTo(59)

Comparable : 기본 정렬 기준 구현

Comparator : 기본 정렬 기준 외에 다른 기준으로 정렬한다.

Comparable을 implement한 뒤, compareTo 메소드를 구현한다.

Comparable을 implement하지 않고도 오브젝트의 특정변수를 기준으로 정렬하는 방법이 있는데, 그게 바로 Comparator이다!

# compareTo()

:  문자열의 사전순 값을 비교하여 그에 해당되는 int 값을 리턴한다.

A , B를 비교할 경우

A = B : 0을 리턴

A > B : 1을 리턴

A < B : -1을 리턴

# compare()

:  Comparator 인터페이스를 구현할 때 작성해야하는 메서드 이다.

2개의 인자를 넘겨 내부의 구현에 따라 int값 리턴.

Collections.sort(list, new Comparator<String>(){

@Override
    public int compare(String o1, String o1){
    	if(o1 > o2) {return 1;}
        else if( o1 < o2 ) { return 1;}
        else {return 0;}
})
profile
내가 정리하고 싶어서 쓰는 로오그

0개의 댓글