프로그래머스 - 가장 큰 수

이형석·2024년 6월 9일

알고리즘 Phase1

목록 보기
36/59

* 개인 기록용 글이므로 풀이는 내용에 없음
sort함수의 Comparator에다가, compareTo함수를 이용해 String을 비교하는 정렬 유형의 좋은 문제인 것 같다.

처음엔 두 수의 같은 자릿수를 비교하며 더 큰 수가 나올 때까지 비교하는 로직을 직접 람다함수로 구현했는데, 나중에 깨달은 게 문자열을 비교하는 함수와 똑같았어서 compareTo함수를 사용하면 됐었다.

import java.util.*;
class Solution {
    public String solution(int[] numbers) {
        String[] numberStr = new String[numbers.length];
        for(int i = 0; i < numbers.length; i++){
            numberStr[i] = numbers[i]+"";
        }
        Arrays.sort(numberStr, (o1,o2) ->{
            String str1 = o2+o1;
            return str1.compareTo(o1+o2);
        });
        if(numberStr[0].equals("0")){
            return "0";
        }
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < numberStr.length; i++){
            sb.append(numberStr[i]);
        }
        return sb.toString();
    }
}

+ 단순히 사전 순으로 정렬하는 게 아니므로, compareTo함수를 오버라이딩 해주어야 함
(그냥 Arrays.sort(String[])만 하면 안됨)

profile
금융IT 개발자

0개의 댓글