‡ CODING TEST STUDY ‡/º 프로그래머스

[프로그래머스 | Java Lv.2] [복습] 가장 큰 수 (정렬)

Trudy | 송연 2024. 6. 11. 02:13

문제

https://school.programmers.co.kr/learn/courses/30/lessons/42746

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


접근

 

Comparator override를 다음과 같이 람다로 표현해서 더 깔끔하게 해보았다

        Arrays.sort(s, (o1, o2)-> (o2+o1).compareTo(o1+o2));

        Arrays.sort(s, new Comparator<String>(){
            @Override
            public int compare(String o1, String o2) {
                return (o1+o2).compareTo(o2+o1);
            }
        });



최종 코드

package week6.baek.sort;

import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;

public class BiggestNum {
    public static String solution(int[] numbers) {
        String[] s = new String[numbers.length];

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

        Arrays.sort(s, (o1, o2)-> (o2+o1).compareTo(o1+o2));

        if(s[0].equals("0")) return "0";

        StringBuilder sb = new StringBuilder();

        for (String str : s) {
            sb.append(str);
        }

        return sb.toString();

    }

    public static void main(String[] args) {
        int[] numbers = {6, 10, 2};
        System.out.println(solution(numbers));
    }
}