본문 바로가기
IT/JAVA

[프로그래머스] 정렬(Array)_2_가장 큰 수

by 행복한 용용이 2020. 12. 17.
반응형

프로그래머스 정렬(Array)의 두번째 문제

가장 큰 수

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수

 

     package programmkit;

 

     import java.util.Arrays;

     import java.util.Comparator;

 

     /* 가장 큰 수

     * 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수

     */

 

     public class Array_2 {

          public static void main(String[] args) {

               int numbers[] = {3,30,34,5,9};

               String answer = solution(numbers);

               System.out.println(answer);

          }

 

          private static String solution(int[] numbers) {

               //int배열 >String배열로 변환

               String numberST[] = new String[numbers.length];

               for(int x=0; x<numbers.length; x++) {

                    numberST[x] = String.valueOf(numbers[x]);

               }

               //int + "" 형식으로 int>String 하는건 효율 매우 안좋다.

               //String.valueof() 쓸 것!

 

               // Arrays.sort(numberST, new Comparator<String>() {

               //comparator : 기본 정렬기준 외에 다른 기준으로 정렬하고자 할 때

 

               // @Override

               // public int compare(String o1, String o2) {

               // return (o2+o1).compareTo(o1+o2);

               // }

               // });

 

               Arrays.sort(numberST, (o1,o2)->(o2+o1).compareTo(o1+o2));

 

               if(numberST[0].equals("0"))

                    return "0";

 

               // String answer = "";

               // for(int x=0; x<numberST.length; x++) {

               // answer += numberST[x];

               // }

               // return answer;

 

               StringBuffer sb = new StringBuffer();

               for(int x=0; x<numberST.length; x++) {

                    sb.append(numberST[x]);

               }

               return sb.toString();

          }

     }


1. int 배열을 String으로 바꿔야 한다.

     보통 int를 String으로 바꿀 때 int+"" 방식을 많이 쓰는데 효율이 매우 안좋다!

     String.valueof() 쓸 것

2. 2개를 더하여 더 큰 쪽이 우선순위에 있도록 정렬

     Arrays.sort에서 Comparator를 쓰는 방법

     Comparator : 기본 정렬 기준 외에 다른 기준으로 정렬하고자 할 때 쓴다!

3. 0으로만 구성된 경우는 0 return

4. 그 외는 연결해서 answer return

     나는 StringBuffer 써서 toString으로 바꿈

     그냥 String으로 이어붙여도 ok

P.S

Comparator를 새로 배웠다.

Arrays.sort 의 무궁무진함..또르륽

 

 

[출처] 빡쏘끼룩

반응형