본문 바로가기
Coding Test/Programmers

[프로그래머스] 가장 큰 수 [JAVA(자바)]

‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀

문제 👉 <코딩테스트 연습 - 가장 큰 수 | 프로그래머스>

1. 문제

  1. 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 구한다.
  2. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.

2. 풀이

정렬 을 이용한 문제 풀이

  1. 주어진 숫자 배열을 문자 배열로 변환한다.
  2. Arrays.sort()를 이용해 내림차순으로 정렬을 한다.
    1. 내림차순 : (String a, String b) -> { return (b+a).compareTo(a+b);
    2. 오름차순 : (String a, String b) -> { return (a+b).compareTo(b+a);
  3. 정렬한 배열의 맨 앞이 0이면 0을 리턴하고, 0이 아니면 리턴하기 위해 배열을 문자로 변환한다.

3. 코드

import java.util.*;
class Solution {
    public String solution(int[] numbers) {
        String answer = "";
        String[] str = new String[numbers.length];
        // int배열 -> String배열
        for(int i=0; i<numbers.length; i++){
            str[i] = String.valueOf(numbers[i]);
        }
        // 내림차순 정렬
        Arrays.sort(str,
                    (String a, String b) -> { return (b+a).compareTo(a+b);}
                    );
        // 맨 앞이 0이면 바로 0리턴
        if (str[0].equals("0")) return "0";
        // String배열 -> String
        for(String s : str) answer += s;        

        return answer;
    }
}


References


🏋🏻 개인적으로 공부한 내용을 기록하고 있습니다.
잘못된 부분이 있다면 과감하게 지적해주세요!! 🏋

댓글