https://programmers.co.kr/learn/courses/30/lessons/42746?language=java
Comparator 인터페이스에 대한 지식이 있어야 문제를 쉽게 접근 가능할 수 있을 것이라고 생각함
정렬을 위한 인터페이스로 Comparable과 Comparator가 있는데 Comparable 인터페이스는 보통 객체의 기본적이고 고정된 정렬을 위해 사용하며 Comparator 인터페이스는 기본 정렬 기준과 다르게 정렬하고 싶을 때 사용함
해결 방안
1. numbers 1차원 int 배열 크기만큼 sNumbers 1차원 String 배열을 만들고 int 값들을 String 값들로 저장해줌
2. 위의 코드 처럼 sNumbers 배열을 정렬해주는데 정수들을 붙여서 만들었을 때 크게 만들 수 있도록 내림차순으로 정렬해줌
=> 나중에 다 이어 붙일 것이므로 내림차순 정렬
3. sNumbers 배열들을 순서대로 다 이어 붙여줌
4. numbers 배열에 {0,0,0} 과 같이 0 값들만 가진 배열이 있을 수 있으므로 sNumbers 배열의 값들을 전부 이어 붙인 answer이 0으로 시작하면 "0"을 저장해줌
코드
import java.util.*;
// 가장 큰 수
class Solution {
public String solution(int[] numbers) {
String answer = "";
String[] sNumbers = new String[numbers.length];
for(int i=0; i<numbers.length; i++){
sNumbers[i] = numbers[i] + "";
}
Arrays.sort(sNumbers, new Comparator<String>(){
@Override
public int compare(String n1, String n2){
// 더해서 큰 값 만드는 내림 차순
return (n2+n1).compareTo(n1+n2);
}
});
for(int i=0; i<sNumbers.length; i++){
answer += sNumbers[i];
}
// "000" 과 같이 0이 여러번인 경우 제외
if(answer.startsWith("0"))
answer = "0";
return answer;
}
}
'Development Logs > Algorithms' 카테고리의 다른 글
[JAVA] 프로그래머스 : 타켓 넘버 (코딩테스트 고득점 kit > 깊이/너비 우선 탐색(DFS/BFS)) (0) | 2020.07.24 |
---|---|
[JAVA] 프로그래머스 : 입국심사 (코딩테스트 고득점 kit > 이분탐색) (0) | 2020.07.22 |
[JAVA] 프로그래머스 : 예산 (코딩테스트 고득점 kit > 이분탐색) (0) | 2020.07.21 |
[JAVA] 프로그래머스 : 숫자 야구 (코딩테스트 고득점 kit > 완전탐색) (0) | 2020.07.21 |
[JAVA] 프로그래머스 : 카펫 (코딩테스트 고득점 kit > 완전탐색) (0) | 2020.07.20 |