[프로그래머스] 가장 큰수 - Java

강준호·2023년 11월 17일
0

https://school.programmers.co.kr/learn/courses/30/lessons/42746?language=java

초고

public class PG_가장큰수 {
    public String solution(int[] numbers) {
        String[] stringArray = new String[numbers.length];
        StringBuilder sb = new StringBuilder();

        //String answer = "";
        for(int i=0; i<stringArray.length; i++){
            stringArray[i] = Integer.toString(numbers[i]);
        }
        Arrays.sort(stringArray, Collections.reverseOrder());
        for (int i=0; i<stringArray.length; i++) {
            //if(stringArray[i])
            sb.append(stringArray[i]);
        }

        return sb.toString();
    }

    public static void main(String[] args) {
        PG_가장큰수 pg_가장큰수 = new PG_가장큰수();
        int[] numbers = {3, 30, 34, 5, 9};
        System.out.println(pg_가장큰수.solution(numbers));
    }
}

문제 발생

  • 간단하게 문자열로 역정렬하면 되는줄 알았으나 3, 30 같은 경우를 처리하지 못함.

2차 시도

    public String solution(int[] numbers) {
        String[] stringArray = new String[numbers.length];
        StringBuilder sb = new StringBuilder();

        //String answer = "";
        for(int i=0; i<stringArray.length; i++){    //문자열 배열로 만들고
            stringArray[i] = Integer.toString(numbers[i]);
        }
        Arrays.sort(stringArray, (a,b) -> (b+a).compareTo(a+b));

        for(String s : stringArray){
            sb.append(s);
        }

        return sb.toString();
    }

문제 발생

  • 0,0,0 일 경우를 생각하지 못했다.
  • 기댓갑 0 , 내 코드 000

3차 시도

 public String solution(int[] numbers) {
        String[] stringArray = new String[numbers.length];
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < stringArray.length; i++) {    //문자열 배열로 만들고
            stringArray[i] = Integer.toString(numbers[i]);
        }
        Arrays.sort(stringArray, (a, b) -> (b + a).compareTo(a + b));

        if (stringArray[0].equals("0")) { //정렬 후에도 0이 맨앞이면
            return "0";
        }

        for (String s : stringArray) {
            sb.append(s);
        }

        return sb.toString();
    }

0개의 댓글