프로그래머스_가장큰수

덤벨로퍼·2024년 8월 6일
0

코테

목록 보기
34/37

가장 큰 수

풀이

import java.util.*;

class Solution {
    public String solution(int[] numbers) {
        // int 배열을 String 배열로 변환
        String[] strNumbers = new String[numbers.length];
        for (int i = 0; i < numbers.length; i++) {
            strNumbers[i] = String.valueOf(numbers[i]);
        }
        
        Arrays.sort(strNumbers, (s1, s2) -> (s2 + s1).compareTo(s1 + s2));
          
        if (strNumbers[0].equals("0")) {
            return "0";
        }

        StringBuilder sb = new StringBuilder();
        for (String str : strNumbers) {
            sb.append(str);
        }
        
        return sb.toString();
    }
}

👉 정렬

Arrays.sort(strNumbers, (s1, s2) -> (s2 + s1).compareTo(s1 + s2));

s1 = "3", s2 = "30":
s2 + s1 = "303"
s1 + s2 = "330"
("303").compareTo("330")은 -1을 반환합니다.
👉 즉, "30"이 "3"보다 앞에 위치해야 합니다.
쉽게 말해서 더 큰쪽으로 정렬된다!

(s2 + s1).compareTo(s1 + s2): 더 큰 쪽을 앞에 배치 (내림차순 정렬) 이 문제
(s1 + s2).compareTo(s2 + s1): 더 작은 쪽을 앞에 배치 (오름차순 정렬)
profile
💪 점진적 과부하로 성장하는 개발자

0개의 댓글