알고리즘/프로그래머스
가장 큰 수
가다파하
2020. 11. 2. 00:02
문제 : programmers.co.kr/learn/courses/30/lessons/42746
코딩테스트 연습 - 가장 큰 수
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰
programmers.co.kr
1) 문제 풀이
- 주어진 numbers의 데이터를 10으로 나누어서 나머지 값별 데이터로 데이터를 정렬한다. TreeMap<나머지값, 해당 데이터들>
- Map의 Value들을 내림차순으로 정렬한다.
- 정렬된 value들을 순서대로 하나씩 string 형태의 데이터로 이어 붙인다.
2) 구현 코드
import java.util.*;
class Solution {
public String solution(int[] numbers) {
String answer = "";
TreeMap<Integer, List<Integer>> sortedMap = new TreeMap<Integer, List<Integer>>(Collections.reverseOrder());
for(int number : numbers) {
int namege = number % 10;
List<Integer> list = sortedMap.get(namege);
if(list == null) {
list = new ArrayList<Integer>();
sortedMap.put(namege, list);
}
list.add(number);
}
for(int namege : sortedMap.keySet()) {
sortedMap.get(namege).sort(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
if(o1 > 02) {
return -1;
}else {
return 1;
}
}
});
}
for(List<Integer> value : sortedMap.values()) {
for(int v : value) {
answer += v +"";
}
}
return answer;
}
}
* 201101 테스트 코드는 통과하는데 제출하면 0점이당.....
다른 방법을 일단 생각해 봐야겠다.