-
가장 큰 수알고리즘/프로그래머스 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점이당.....
다른 방법을 일단 생각해 봐야겠다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
두개 뽑아서 더하기 (0) 2020.11.19 크레인 인형뽑기 게임 (0) 2020.11.01 나누어 떨어지는 숫자 배열 (0) 2020.11.01 이상한 문자 만들기 (0) 2020.11.01 가운데 글자 가져오기 (0) 2020.11.01