[프로그래머스] 가장 큰 수-정렬Level2 (자바,java)

[프로그래머스] 가장 큰 수-정렬Level2 (자바,java)

- 풀이

int[] 배열을 String[] 배열로 정렬해주면 되겠다 생각했다.

Arrays.sort(tmp, Collections.reverseOrder()); 내림차순 정렬을 하니

[3, 30, 34, 5, 9] "9534330"

에서 "9534303" 이 나왔다..

30이랑 3을 어떻게 순서를 바꾸지? 고민을하다.. 백트래킹을 해서 풀었는데..

테스트케이스 1~6에서 시간초과랑 컴파일에러가 떴다.. 아마 long타입으로 Math.max 비교를 했는데 long 길이마저 넘어가서 그런거같다.

정렬 카테고리인만큼 다른 정렬방법이 있을거 같았는데 다른 블로그 글을 보니 있었다.

Arrays.sort(tmp,(s1,s2)-> (s2+s1).compareTo(s1+s2)); //스트링 배열 정렬 아스키코드(s2+s1)-(s1+s2)리턴

내림차순 : (s2+s1).compareTo(s1+s2);

오름차순 : (s1+s2).compareTo(s1+s2);

if (tmp[0].equals("0")) return "0";를 추가한 이유는 테스트 케이스에 {0,0,0,0,0} 이 있는데 리턴값이 0이되어야한다.

import java.util.Arrays; class Solution { public static String solution(int[] numbers) { String answer = ""; String[] tmp= new String[numbers.length]; for (int i=0; i (s2+s1).compareTo(s1+s2)); if (tmp[0].equals("0")) return "0"; for (String x : tmp) answer+=x; return answer; } }

람다식 잘쓰고싶다.

from http://rotomoo.tistory.com/26 by ccl(A) rewrite - 2021-11-03 13:01:08