https://programmers.co.kr/learn/courses/30/lessons/42746
import java.util.*;
class Solution {
public String solution(int[] numbers) {
String answer = "";
String[] str = new String[numbers.length];
for(int i=0; i<numbers.length; i++){
str[i] = String.valueOf(numbers[i]);
}
Arrays.sort(str, new Comparator<String>(){
@Override
public int compare(String a, String b){
return (b+a).compareTo(a+b);
}
});
if(str[0].equals("0")) return "0";
for(String s :str) answer +=s;
return answer;
}
}
int 배열을 String 배열로 바꿔서 String으로 정렬하면 문자로 인식해서 가장앞에 있는 숫자가 큰 대로 나열을 해준다.
그런데 이렇게하면
입력값 [3, 30, 34, 5, 9] ---> sort() ---> [9, 5, 34, 30, 3]
기댓값 "9534330"
실행한 결괏값 "9534303"이(가) 기댓값 "9534330"와(과) 다릅니다.
package com.company;
import java.util.Arrays;
import java.util.Collections;
public class programmers3 {
public static void main(String[] args) {
//https://programmers.co.kr/learn/courses/30/lessons/42746
int[] numbers = {6, 61, 22, 2, 5, 9, 92, 62, 0};
int[][] commands = {{2, 5, 3}, {4, 4, 1}, {1, 7, 3}};
String str ="";
String result = Solution.solution(numbers);
}
static class Solution {
public static String solution(int[] numbers) {
String answer = "";
String[] string_array = new String[numbers.length];
for(int i=0; i<numbers.length; i++){
string_array[i] = String.valueOf(numbers[i]);//int[] -> String[]
}
Arrays.sort(string_array, Collections.reverseOrder());//내림 정렬
//System.out.println(Arrays.toString(string_array));//[92, 9, 62, 61, 6, 5, 22, 2, 0]
for(String s: string_array) answer += s;
System.out.println(answer);//9296261652220
return answer;
}
}
}
'알고리즘 > 알고리즘' 카테고리의 다른 글
[백준] 팩토리얼 (0) | 2021.10.14 |
---|---|
[알고리즘] 시간이 없을 때 (0) | 2021.09.29 |
[프로그래머스][정렬][k번째 수] (0) | 2021.09.28 |
[프로그래머스][해시] 완주하지 못한 선수 (0) | 2021.09.27 |
[백준] No Duplicates (0) | 2021.09.27 |