View
https://school.programmers.co.kr/learn/courses/30/lessons/42746?language=java
📚 문제
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
📝 문제 해결
정수를 String으로 변환하여 두 문자열의 조합이 큰 것부터 오도록 정렬해주고 정렬된 배열값을 이어붙여 return 하면된다. (맨 앞자리가 0이면 0을 반환해줌)
💻 코드
import java.util.Arrays;
class Solution {
public String solution(int[] numbers) {
String[] arr = new String[numbers.length];
for(int i=0; i<numbers.length; i++) arr[i] = Integer.toString(numbers[i]);
Arrays.sort(arr, (o1, o2) -> -(o1+o2).compareTo(o2+o1));
String answer = "";
for(String str : arr) answer += str;
if(answer.charAt(0) == '0') answer = "0";
return answer;
}
}
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 68644번 두 개 뽑아서 더하기(Java) (0) | 2023.04.12 |
---|---|
[정렬] 프로그래머스 42748번 K번째수(Java) (0) | 2023.03.19 |
[DFS/BFS] 프로그래머스 1844번 게임 맵 최단거리(Java) (0) | 2023.03.14 |
reply