Hi, There!
안녕하세요, 바오밥입니다.
목차
- 문제
- 풀이
문제
문제 내용
https://school.programmers.co.kr/learn/courses/30/lessons/42746?language=java
풀이
나의 풀이
- 일반적인 내림차순 정렬로 시도하려다가 반례가 보여서 고민하다가 결국 못 풀었다. 이에 다른 사람의 풀이를 참고하여 풀이했다.
- comparator와 comparable에 대한 공부가 추가적으로 필요할 것 같다. 조만간 블로그에 포스팅할 예정이다.
import java.util.Arrays;
class Solution {
public String solution(int[] numbers) {
String[] arr = new String[numbers.length];
for (int i = 0; i < arr.length; i++)
arr[i] = String.valueOf(numbers[i]);
// 배열 정렬
// 일반적인 내림차순 정렬 시 반례 발생. 반례 예시) 3, 30, 34 -> 34303으로 정렬됨.
// sort의 인자로 Comparator를 전달 및 문자열 조합 후 비교한뒤 더 큰 값이 먼저 위치하도록 구현(내림차순)
Arrays.sort(arr, (o1, o2) -> (o2 + o1).compareTo(o1 + o2));
// 배열에 0만 담겨있는 경우
if (arr[0].equals("0")) return "0";
StringBuilder sb = new StringBuilder();
for (int i = 0; i < arr.length; i++)
sb.append(arr[i]);
return sb.toString();
}
}
'Dev > PS' 카테고리의 다른 글
[프로그래머스-코딩테스트 연습] 최소직사각형 (1) | 2023.12.08 |
---|---|
[프로그래머스-코딩테스트 연습] H-Index (1) | 2023.12.08 |
[프로그래머스-코딩테스트 연습] K번째수 (0) | 2023.12.07 |
[프로그래머스-코딩테스트 연습] 이중우선순위큐 (0) | 2023.12.07 |
[프로그래머스-코딩테스트 연습] 디스크 컨트롤러 (0) | 2023.12.07 |