[Programmers]정렬-가장큰수
by YoungHwan Kim
나의 풀이
package com.hyosung.algo;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
// 정렬 - 가장큰수 level.2
public class pro_sort_p02 {
static int[] buff;
static boolean[] visited;
public static void main(String[] args) {
//int[] numbers = {6,10,2};
int[] numbers = {3,30,34,5,9};
//int[] numbers = {0,4,1};
String result = solution(numbers);
System.out.println("result: " + result);
}
static void viewArray(int[] a) {
for(int i=0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
}
static void viewStrArray(String[] a) {
for(int i=0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
}
public static String solution(int[] numbers) {
String answer = "";
String[] str = new String[numbers.length];
//int배열 String 배열로 변환
for(int i=0; i < numbers.length; i++) {
str[i] = String.valueOf(numbers[i]);
}
viewStrArray(str);
System.out.println();
//내림차순 정렬
Arrays.sort(str, new Comparator<String>() {
@Override
public int compare(String a, String b) {
System.out.println();
viewStrArray(str);
System.out.println();
System.out.println(a + " :: " + b);
System.out.println();
return (b+a).compareTo(a+b);
}
});
System.out.println();
viewStrArray(str);
//0값이 중복일경우 ex){0,0,0}
//답이 000이 나오면 안되므로 첫번째값이 0이면 0을 리턴
if(str[0].equals("0")){
return "0";
}
for(String s : str) answer += s;
return answer;
}
}
다른 풀이.01
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
class Solution {
public String solution(int[] numbers) {
String answer = "";
List<Integer> list = new ArrayList<>();
for(int i = 0; i < numbers.length; i++) {
list.add(numbers[i]);
}
Collections.sort(list, (a, b) -> {
String as = String.valueOf(a), bs = String.valueOf(b);
return -Integer.compare(Integer.parseInt(as + bs), Integer.parseInt(bs + as));
});
StringBuilder sb = new StringBuilder();
for(Integer i : list) {
sb.append(i);
}
answer = sb.toString();
if(answer.charAt(0) == '0') {
return "0";
}else {
return answer;
}
}
}
**다른풀이.02
import java.util.Arrays;
import java.util.Comparator;
class Solution {
public String solution(int[] numbers) {
String[] nums = new String[numbers.length];
for (int i=0; i<nums.length; i++)
nums[i] = numbers[i] + "";
Arrays.sort(nums, new Comparator<String>() {
public int compare(String o1, String o2) {
return (o2 + o1).compareTo(o1 + o2);
}
});
String ans = "";
for (int i=0; i<numbers.length; i++)
ans += nums[i];
return ans.charAt(0) == '0' ? "0" : ans;
}
}
Subscribe via RSS