[프로그래머스] 가장 큰 수 42746 (JAVA)

dia·2023년 9월 22일
0

풀이방식

  1. int형 배열을 string 배열로 복사
  2. 합을 비교하여 배열 정렬
  3. 예외처리 및 정답 출력

포인트

sort 방식 지정

  1. sort메소드를 사용할 때 Comparator를 새로 만들어서 붙여줄 수 있음
    요소들을 비교해주는 클래스 제작
Arrays.sort(array, new Comparator<Class>() { /*compare() 메소드*/ });
  1. 새로 만들 Comparator안에 compare() 메소드를 구현해 줌
    compare() 메소드는 두 개의 매개변수를 받아서 비교하고 그 결과를 리턴함
public int compare(Object object1, Object object2) {return /*비교 결과 계산*/}

compareTo()

a.compareTo(b)
a가 b보다 큰 지 작은 지 비교해서 숫자로 알려줌

사용 이유:
compare() 메소드를 구현할 때 두 매개변수의 비교 결과를 계산하기 위해 사용함
a+b가 큰 지, b+a가 큰 지 계산함


구현

import java.util.Arrays;
import java.util.Comparator;

public class NUM42746 {
    public static void main(String[] args) {
        int[] array = {3, 30, 34, 5, 9};
        System.out.println((solution(array)));
    }
    public static String solution(int[] numbers) {
        String answer = "";
        
        String[] nums = new String[numbers.length];
        for(int i = 0; i < numbers.length; i++) {
            nums[i] = numbers[i] + "";
        }
        
        Arrays.sort(nums, new Comparator<String>() {
           public int compare(String a, String b) {
               return (b+a).compareTo(a+b);
           } 
        });
        
        for(int i = 0; i < numbers.length; i++) {
            answer += nums[i];
        }
        if(answer.charAt(0) == '0') answer = "0"; //{0000...0}일 경우
        
        return answer;
    }
}

*다른 분들의 코드를 참고하여 작성했습니다

profile
CS 메모장

0개의 댓글