-
프로그래머스 - 가장 큰 수 [자바]Algorithms/- 프로그래머스 2022. 2. 17. 23:34
- 문제 링크 : 가장 큰 수
코딩테스트 연습 - 가장 큰 수
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰
programmers.co.kr
정답(Solution)
import java.util.*; class Solution { public String solution(int[] numbers) { String[] arr = Arrays.stream(numbers) .boxed() .map(String::valueOf) .sorted((a, b) -> (b+a).compareTo(a+b)) .toArray(String[]::new); if(arr[0].equals("0")){ return "0"; } StringBuilder sb = new StringBuilder(); for(String str : arr){ sb.append(str); } return sb.toString(); } }
분석
- dfs문제인줄 알았는데 정렬 문제였다.
- int로 생각하니까 dfs로 풀어야 되는 문제인줄 알았는데 String으로 변환하고
비교하면 원하는 순서로 정렬이 되어 마지막에 하나의 String으로 변환해주면 되었다. - 하지만 dfs로도 풀 수 있을 것 같기는 하다. (시간초과로 실패될 것 같기는 하다.)
반응형