🍀 문제
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
제한 사항
- numbers의 길이는 1 이상 100,000 이하입니다.
- numbers의 원소는 0 이상 1,000 이하입니다.
- 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.
입출력 예
[6, 10, 2] | 6210 |
[3, 30, 34, 5, 9] | 9534330 |
https://programmers.co.kr/learn/courses/30/lessons/42746
코딩테스트 연습 - 가장 큰 수
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 ��
programmers.co.kr
나의 코드 😊
처음 푼 실패 코드...
몇개는 성공했지만 몇개는 틀렸다..ㅠㅠ
class Solution {
public String solution(int[] numbers) {
String answer = "";
int max = 0;
double[][] num = new double[numbers.length][2];
for (int i = 0; i < numbers.length; i++) {
num[i][0] = numbers[i];
num[i][1] = 0;
while (num[i][0] >= 10) {
num[i][0] /= 10.0;
num[i][1]++;
}
}
Arrays.sort(num, new Comparator<double[]>() {
@Override
public int compare(double o1[], double o2[]) {
if (o1[0] == o2[0]) {
if (o1[1] - o2[1] > 0) {
return 1;
}
return -1;
}
if (o2[0] - o1[0] > 0) {
return 1;
}
return -1;
}
}
}
그래서 다른 코드를 참조하고 푼 성공 코드👇
import java.util.Arrays;
import java.util.Comparator;
class Solution {
public String solution(int[] numbers) {
String answer = "";
String[] nums = new String[numbers.length];
for (int i = 0; i < numbers.length; i++) {
nums[i] = Integer.toString(numbers[i]); //숫자를 문자열로 변환
}
Arrays.sort(nums, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return (o2+o1).compareTo(o1+o2);
}
});
if (nums[0].equals("0"))//숫자가 0만 있으면 만들수 있는 수는 0
return "0";
for (String a : nums) {//순서대로
answer += a;
}
return answer;
}
}
⭐ (o2+o1).compareTo(o1+o2)
숫자를 이어붙일때 더 큰 값인 경우를 앞 순서로 두도록 함
ex) 3, 30 두개를 비교할때 330, 303 두 개 중에서 큰 값을 우선으로
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 LV2. [3차] n진수 게임 (자바) (0) | 2020.09.06 |
---|---|
프로그래머스 LV1. 실패율 (0) | 2020.08.31 |
프로그래머스 LV2. 주식가격 (0) | 2020.08.28 |
프로그래머스 LV2. 기능개발 (0) | 2020.08.26 |
프로그래머스 LV2. 위장 (0) | 2020.08.26 |
댓글