JAVA/Algorithm

[프로그래머스/java] 가장 큰 수 (+ Comparator / compareTo)

nang. 2020. 12. 28. 23:35
반응형
SMALL

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

 

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

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

programmers.co.kr

 

  • compareTo 함수에 대하여

https://conanglog.tistory.com/219

 

[JAVA] compareTo 함수 (숫자/문자 비교)

1. 숫자 비교 기준값.compareTo(비교값); 기준값 == 비교값 0 반환 기준값 > 비교값 1 반환 기준값 < 비교값 -1 반환 Integer a = 7; Integer b = 3; a.compareTo(b); >> 1 int 형 선언으로는 안되나? compare()..

conanglog.tistory.com

 

 

  • Comparator 인터페이스 및 compareTo() 이용 내림차순
(s2+s1).compareTo(s1+s2)

 

  • Comparator 인터페이스 및 compareTo() 이용 오름차순
(s1+s2).compareTo(s2+s1)

 

 

import java.util.*;

class Solution {
    public String solution(int[] numbers) {
        String answer = "";
        
        String[] arr = new String[numbers.length];
        
        // int 배열을 String 배열로 변환
        for(int i = 0; i < numbers.length; i++) {
            arr[i] = (String.valueOf(numbers[i]));
        }
        
        Arrays.sort(arr, new Comparator<String>() {
            
            @Override
            public int compare(String s1, String s2) {
                return(s2+s1).compareTo(s1+s2); // 내림차순
            }
        });
        
        // 만약 입력 케이스로 [0, 0, 0] 이런게 들어올 수 있으므로 그땐 그냥 0 반환
        if(arr[0].equals("0")) {
            return "0";
        }
        
        for(int i = 0; i < arr.length; i++) {
            answer += arr[i];
        }
        
        return answer;
    }
}
반응형
LIST