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

난이도

레벨2

문제

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

풀이

  1. 반환타입이 문자열이고 정렬문제이므로, 정수형배열을 문자열 배열로 바꿔준다.
  2. s2+s1, s1+s2 비교해서 더 큰 수를 반환해줘야한다.
    ex) s1 = 3, s2 = 30 -> 330 vs 303
    내림차순 = (s2 + s1).compareTo(s1 + s2);
    오름차순 = (s1 + s2).compareTo(s2 + s1);
  3. 모든 수가 0인 경우일 수 있으니 그 경우 "0"을 리턴한다.
  4. 문자열배열을 문자로 만들고 리턴한다.

코드


import java.util.*;

public class Solution {

    public String solution(int[] numbers) {
        String answer = "";

        String[] arr = new String[numbers.length];
        for (int i = 0; i < numbers.length; i++) {
            arr[i] = String.valueOf(numbers[i]);
        }

        Arrays.sort(arr, new Comparator<String>() {
            @Override
            public int compare(String s1, String s2) {
                return (s2 + s1).compareTo(s1 + s2);
            }

        });

        if (arr[0].equals("0")) {
            return "0";
        }

        String s = "";
        for (int i = 0; i < arr.length; i++) {
            s += arr[i];
        }

        return s;
    }
}

https://tosuccess.tistory.com/199
https://ivory-room.tistory.com/43

좋은 웹페이지 즐겨찾기