프로그래머스 - 가장 큰 수(정렬)

구잉·2021년 10월 25일
0

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

  1. temp_num[i][0]에 numbers의 각 숫자들을 전부 4자리로 만들어 저장한다.
    이때, numbers의 숫자들이 반복되어 나오는 형식으로 변경한다.
    (EX.
    [6, 10, 2] -> [6666, 1010, 2222]
    [3, 30, 34, 5, 9] -> [3333, 3030, 3434, 5555, 9999]
    )
    temp_num[i][1]에는 해당 값들에 index를 저장한다.

  2. temp_num을 temp_num[i][0]에 따라 오름차순으로 정렬한다.

  3. 마지막 temp_num의 값부터 string으로 바꿔 answer에 저장한다.
    이때, numbers = [0, 0, 0, 0]인 경우, answer = "0000"가 되기때문에
    처음이 0이면 answer = "0" 으로 하고 반복을 중단한다.

import java.util.*;
import java.util.Arrays;

class Solution {
    public String solution(int[] numbers) {
        String answer = "";
        int[][] temp_num = new int[numbers.length][2];
        
       for(int i = 0 ; i < numbers.length ;  i++){
           if(0 <= numbers[i] && numbers[i] < 10){
              temp_num[i][0] = numbers[i] *1000 + numbers[i] *100 
                  +numbers[i] *10 + numbers[i];
               temp_num[i][1] = i;
           }
           else if(10 <= numbers[i] && numbers[i] < 100){
               temp_num[i][0] = numbers[i] * 100 + numbers[i];
               temp_num[i][1] = i;
           }
            else if(100 <= numbers[i] && numbers[i] < 1000){
               int n  = numbers[i] / 100;
                temp_num[i][0] = numbers[i] * 10 + n;
                temp_num[i][1] = i;
           }
           else if(1000 <= numbers[i] && numbers[i] < 10000){
               temp_num[i][0] = numbers[i] / 10;
                temp_num[i][1] = i;
           }
       }
        Arrays.sort(temp_num,Comparator.comparingInt(o1 -> o1[0]));          
        
        for(int i = temp_num.length-1 ; i >= 0 ; i--){
            //System.out.println(temp_num[i][0]+" "+temp_num[i][1]);
            if(i == temp_num.length-1 && temp_num[i][0] == 0){
                answer = "0";
                break;
            }
            String str = Integer.toString(numbers[temp_num[i][1]]);
            answer += str;
        }
       
        
        //System.out.println(answer);
        return answer;
    }
}
profile
시작을 두려워하지말자

0개의 댓글