프로그래머스 - 가장 큰수 (Level 2)

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