반응형
- 가장 큰 수
문제 설명
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
제한 사항
- numbers의 길이는 1 이상 100,000 이하입니다.
- numbers의 원소는 0 이상 1,000 이하입니다.
- 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.
입출력 예
numbers return
[6, 10, 2] | "6210" |
[3, 30, 34, 5, 9] | "9534330" |
import java.util.*;
class Solution {
public String solution(int[] numbers) {
String answer = "";
String[] strArr = new String[numbers.length];
for(int i=0; i<numbers.length; i++ ) {
strArr[i] = Integer.toString(numbers[i]);
}
Arrays.sort(strArr, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return (o2+o1).compareTo(o1+o2);
}
});
if(strArr[0].equals("0")){
answer = "0";
} else{
for(String word : strArr) {
answer+=word;
}
}
return answer;
}
}
혼자서 고민하다가 머리가 도저히 돌아가지 않아, 타 블로그들을 참고했다. 그중 내 처음 생각과 비슷하게 compator를 이용한 해결법이 있었다. 아.... 내가 String의 대소비교와 Comparator의 사용법에 대해서 익숙했다면 분명 풀수있지 않았을까? 하는 아쉬움이 남는다.
Comparator VS Comparable의 차이점과 String 비교연산에 대해서 다시한번 공부해보자.
반응형
'알고리즘' 카테고리의 다른 글
오늘의 연습문제-내적(lv1) (0) | 2022.07.27 |
---|---|
완전탐색-카펫(lv2) (0) | 2022.07.26 |
정렬알고리즘 - Lv1(K번째수)-1(completed) (0) | 2021.07.19 |
탐욕알고리즘 - Lv2(조이스틱)-1(completed) (0) | 2021.07.14 |
탐욕알고리즘 - Lv1(체육복)-2 (0) | 2021.07.12 |