프로그래머스 42746번 가장 큰 수 Java

: ) YOUNG·2024년 3월 6일
1

알고리즘

목록 보기
333/411
post-thumbnail

프로그래머스 42746번
https://school.programmers.co.kr/learn/courses/30/lessons/42746

문제



생각하기


✔️ 정렬 문제이다.



동작

⭐ 길이가 너무 길어질 수 있으니, 문자열로 바꾸어 return한다는게 어떻게 보면 힌트이다.

⭐ 문자열로 만들어서 앞뒤로 합친 후 사전 순으로 비교하고 내림차순으로 정렬하면 가장 큰 값을 만들 수 있다.

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

PriorityQueue로도 궁금해서 해봤는데, 시간이 더 오래걸린다. 아무래도 삽입이나 정렬하면서 들어가고 빼는 과정에서 발생하는 시간 때문인 것 같다.



결과


코드



import java.util.*;

class Solution {
    // https://school.programmers.co.kr/learn/courses/30/lessons/42746
    
    public String solution(int[] numbers) {        
        int n = numbers.length;
        String[] arr = new String[n];

        for(int i=0; i<n; i++) {
            arr[i] = String.valueOf(numbers[i]);
        }
         
        Arrays.sort(arr, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return (o2 + o1).compareTo(o1 + o2);
            }
        });
        
        if(arr[0].equals("0")) {
            return "0";
        }
        
        
        StringBuilder sb = new StringBuilder();
        for(int i=0; i<n; i++) {
            sb.append(arr[i]);
        }
        
        return sb.toString();
    } // End of solution()
} // End of Solution class

0개의 댓글