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

chaemin·2024년 4월 23일
0

프로그래머스

목록 보기
27/64

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/72411

2. 풀이

참고 풀이

문제 해석이 가장 중요한 관건이였다. 문제를 보자마자 DFS가 먼저 떠오른걸 보면, 아직 나는 훈련이 많이 필요하다는 것을 깨달을 수 있었다.

  1. int[] 배열을 String[]배열로 바꿔준다.
  1. 두 숫자를 이어 보고, 순서를 바꿔서 이어본 후 더 큰 수를 선택하는 것이다.
    6, 10일때 610 / 106중 더 큰걸 선택하여 앞으로 오게 하면 된다.
Arrays.sort(newNumbers, (o1, o2) -> (o2+o1).compareTo(o1+o2));
  1. 원소가 0으로만 구성되어 나올 수 있기 때문에 0000~인 경우는 0으로 return하게 만든다.
  1. String.join()을 통해 문자열 배열을 하나의 문자열로 반환한다.

3. 전체코드

import java.util.*;

class Solution {
    public String solution(int[] numbers) {
        
        String newNumbers[] = Arrays.stream(numbers)
                                    .mapToObj(String::valueOf)
                                    .toArray(String[]::new);
        
        Arrays.sort(newNumbers, (o1, o2) -> (o2+o1).compareTo(o1+o2));
        
        if(newNumbers[0].equals("0")){
            return "0";
        }
        
        return String.join("", newNumbers);
    }
}

0개의 댓글