in.add()

[42746] 가장 큰 수 본문

Algorithm/Programmers

[42746] 가장 큰 수

idan 2021. 9. 13. 22:46

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42746

 

코딩테스트 연습 - 가장 큰 수

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰

programmers.co.kr

 

문제 해결 방법

numbers 모두 list에 담아준 후, 문자열+문자열 값을 int로 변환했을 때를 비교하여 오름차순으로 정렬했다.

마지막 테스트 케이스를 틀렸는데, list의 첫 번째 값이 "0"이라면 "0"을 return 하는 것을 추가해 통과할 수 있었다.

 

import java.util.*;

class Solution {
    public String solution(int[] numbers) {
        List<String> list = new ArrayList<>();

        for(int i = 0; i < numbers.length; i++)
            list.add(Integer.toString(numbers[i]));

        Collections.sort(list, new Comparator<String>(){
            public int compare(String a, String b){
                int x = Integer.parseInt(a + b);
                int y = Integer.parseInt(b + a);

                return y - x;
            }
        });

        if(list.get(0).equals("0"))
            return "0";

        String answer = "";

        for(int i = 0; i < list.size(); i++)
            answer += list.get(i);
        return answer;
    }
}

'Algorithm > Programmers' 카테고리의 다른 글

[84512] 5주차_모음사전  (0) 2021.09.15
[42883] 큰 수 만들기  (0) 2021.09.14
[42885] 구명보트  (0) 2021.09.08
[72412] 순위 검색  (0) 2021.09.07
[72411] 메뉴 리뉴얼  (0) 2021.09.06
Comments