잡다한 배똥월드

728x90
코딩 테스트 풀이 체크리스트
2시간 내에 풀었는가? O
본인의 실력으로 풀었는가? O

 

 

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

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

programmers.co.kr

 

 

 

 

 

import java.util.*;
class Solution {
    public String solution(int[] numbers) {
        int check = 0;
        
        //문자열로 변경하면서 check에 모든 합 구하기
        String[] nString = new String[numbers.length];
        for (int i = 0; i < numbers.length; i++) {
            nString[i] = Integer.toString(numbers[i]);
            check += numbers[i];
        }
        
        //합이 0이면 그냥 0 바로 리턴
        if (check == 0) return "0";
        
        //정렬
        //예를 들어서 n1 = 1, n2 = 123 일 때 n1+n2인 1123과 n2+n1인 1231을 비교해서
        //큰 숫자로 만들어지는 걸로 내림차순 정렬하기
        Arrays.sort(nString, new Comparator<String>(){
            @Override
            public int compare(String n1, String n2) {
                int s1 = Integer.parseInt(n1 + n2);
                int s2 = Integer.parseInt(n2 + n1);
                
                return s2 - s1;
            }
        });
        
        //구분자 ""로 합쳐서 리턴
        return String.join("", nString);
    }
}

 

테스트 1 통과 (193.35ms, 132MB)
테스트 2 통과 (101.99ms, 124MB)
테스트 3 통과 (256.09ms, 130MB)
테스트 4 통과 (19.94ms, 82.2MB)
테스트 5 통과 (187.00ms, 115MB)
테스트 6 통과 (193.18ms, 122MB)
테스트 7 통과 (2.32ms, 78.2MB)
테스트 8 통과 (1.95ms, 73.2MB)
테스트 9 통과 (1.85ms, 77MB)
테스트 10 통과 (2.35ms, 76.6MB)
테스트 11 통과 (0.03ms, 75.8MB)
테스트 12 통과 (1.62ms, 75.3MB)
테스트 13 통과 (1.81ms, 77.5MB)
테스트 14 통과 (1.80ms, 74.4MB)
테스트 15 통과 (2.24ms, 73.5MB)

 

 

 

 

 

 

728x90

+ Recent posts