코딩테스트 정리(자바)
프로그래머스 - 가장 큰수 (Level 2)
재히hj
2024. 1. 24. 19:54
728x90
1) int 배열을 String 배열로 변환
2) 두 문자열을 이어 붙여서 비교하여 내림차순으로 정렬시킨다.
3) 정렬된 배열의 첫번째 원소가 0이라면 모든 원소가 0이므로 0 리턴
4) 아니라면 모든 문자열 이어 붙여서 최종 반환
import java.util.*;
class Solution {
public String solution(int[] numbers) {
String[] str=new String[numbers.length];
for(int i=0;i<numbers.length;i++){ //int-> string으로 변환
str[i]=Integer.toString(numbers[i]);
}
Arrays.sort(str, (o1,o2) -> {
return (o2+o1).compareTo(o1+o2);
//두 문자열을 이어붙혀서 비교
});
if(str[0].equals("0")) //모두 0인경우 0 출력
return "0";
StringBuilder sb=new StringBuilder();
for(String s:str){
sb.append(s); //이어붙혀서 출력하도록
}
return sb.toString();
}
}
1. compareTo 정렬 기준
- 리턴 결과가 양수
: 주체객체가 더 크고 비교객체가 더 작다고 판별 -> 두 객체 스왑 - 리턴 결과가 0
: 두 객체가 동일하다고 판별 -> 유지 - 리턴 결과가 음수
: 주체객체가 더 작고 비교객체가 더 크다고 판별 -> 유지
2. int형을 String으로 변환
Integer.toString(int 숫자);
728x90