[프로그래머스, 42746] 가장 큰 수 (java)
Problem Solving/Programmers

[프로그래머스, 42746] 가장 큰 수 (java)

728x90

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


메모리: 145 MB, 시간: 212.04 ms

사용 알고리즘: 정렬

import java.util.*;

class Solution {
    public String solution(int[] numbers) {
        
        // 정렬을 위한 리스트
        List<String> list = new ArrayList<>();
        boolean flag = true; // 배열에 0만 있는지 채크
        for(int i = 0; i < numbers.length; i++) {
            list.add(String.valueOf(numbers[i]));
            if(numbers[i] != 0) flag = false;
        }
        
        // 배열에 0만 있었다면 바로 "0" 리턴
        if(flag) return "0";
        
        // 두 수를 합쳤을 때,
        // 앞에 놓였을 때 더 큰 수가 되는 수가 우선순위가 더 높음
        Collections.sort(list, (o1, o2) -> {
            
            int o1o2 = Integer.parseInt(o1 + o2);
            int o2o1 = Integer.parseInt(o2 + o1);
            
            return o2o1 - o1o2;
        });
        
        StringBuilder answer = new StringBuilder();
        for(int i = 0; i < list.size(); i++) answer.append(list.get(i));
        return answer.toString();
    }
}
728x90