[lv.2] 가장 큰 수

RTUnu12·2024년 2월 21일
0

Programmers

목록 보기
16/41

https://school.programmers.co.kr/learn/courses/30/lessons/42746

  • 문제
    0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.

  • 풀이
    1) int[]를 String[]으로 만든다.
    2) String[]을 정렬한다. 이때, 그냥 정렬하지 말고 (o1, o2) -> (o2+o1).compareTo(o1+o2), 즉 두 문자열을 합친 값 중 가장 큰 값을 기준으로 내림차순 정렬한다. (안하면 오름차순으로 정렬되는데, 이때 3과 30이 있을 경우 30뒤에 3이 와버린다.)
    3) 만약 맨 앞이 0일 경우 답이 000000...식으로 되기에 0으로 처리한다.

  • 코드

import java.util.*;

class Solution {
    public String solution(int[] num) {
        String[] arr = new String[num.length];
        for(int i=0; i<num.length; i++){
            arr[i] = Integer.toString(num[i]);
        }
        Arrays.sort(arr, (o1, o2) -> (o2+o1).compareTo(o1+o2));
        StringBuilder sb = new StringBuilder();
        if (arr[0].equals("0")) {
            return "0";
        }
        for(int i=0; i<arr.length; i++){
            sb.append(arr[i]);
        }
        String answer = sb.toString();
        return answer;
    }
}
profile
이제 나도 현실에 부딪힐 것이다.

0개의 댓글