[프로그래머스]sorting-가장 큰 수

snusun·2021년 1월 10일
0
import java.util.*;

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

        //convert int to string
        String[] numStr = new String[numbers.length];
        for(int i=0; i<numStr.length; i++){
            numStr[i] = Integer.toString(numbers[i]); 
        }

        //lambda funtion
        Comparator<String> comp = (o1, o2) -> (o2 + o1).compareTo(o1 + o2);
        Arrays.sort(numStr, comp);
        
        // return 0 if array has multiple 0's
		if (numStr[0].equals("0")) {
			return "0";
		}

		for (String a : numStr) {
			answer += a;
        }
        
        return answer;
    }
}

*알고리즘: 앞뒤 조합을 비교하여 순서 바꿔가며 내림차순 정렬

int 배열을 string으로 형변환하여 내림차순 정렬까지는 완료 했는데, 그 후 앞자리가 같은 수들 간의 순서를 정하는 데 있어서 애를 먹었다.

https://codevang.tistory.com/294를 참고하여 멋진 아이디어와 코딩 스킬을 습득할 수 있었다.

내림차순 정렬이 완료된 배열을 가지고 람다 함수를 comparator(정렬하는 특별한 기준 마련)로 사용하여 sort함수를 사용하였다.(https://jeong-pro.tistory.com/173 참고)

그랬더니 앞과 뒤 요소를 이어붙여 더 큰 경우의 순서 조합대로 sorting 되도록 할 수 있었다.

그 아래 부분 코드는 예외처리와 answer string 만드는 코드다.

profile
대학생 근데 이제 컴공을 곁들인

0개의 댓글