문제링크
https://school.programmers.co.kr/learn/courses/30/lessons/42746
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 핵심
주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
알고리즘
-정렬이용
각 숫자를 앞에 뒀을때 뒤에 뒀을때
어떤게 더큰지 비교하면서 큰수로 만들기
코드
public static String solution(int[] numbers) {
String answer = "";
List<Integer> arr = new LinkedList<>();
for (int num : numbers) {
arr.add(num);
}
arr.sort((a, b) -> {
String ab = a + "" + b;
String ba = b + "" + a;
return ba.compareTo(ab);
});
System.out.println("-------------------");
System.out.println(arr);
for (int num : arr) {
answer += num + "";
}
if (answer.charAt(0) == '0') {
answer = "0";
}
System.out.println(answer);
return answer;
}
결과

gpt피드백
-직접 이중 for 말고 자바 sort를 활용해라
배운점느낀점
-기존코드는 내가 직접 정렬을 이중포문을 이용해 만들었었다
그러나 계속 시간초과가 나서 gpt한테 물어보니 sort를 이용하라고 했다
그래서 코드를 수정해 했더니 통과했다 난 여짓것 저 sort가 더 느린줄 알고있었는데
아니였다 머리가 조금 복잡해진다 앞으로 정렬이 필요할때는 이중포문보다는
sort다 하는게 맞을거같다