Coding Test/programmers

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

굠민 2024. 9. 25. 17:25
문제 & 난이도

  • 정렬
  • 난이도 : 레벨2

 

풀이
package sorting;

import java.util.Arrays;

public class Programmers42746 {
    public String solution(int[] numbers){
        String answer = "";
        String[] arr = new String[numbers.length];

        //숫자를 문자열로 반환하여 배열에 저장
        for(int i=0; i<numbers.length; i++){
            arr[i] = Integer.toString(numbers[i]);
        }

        //문자열 내림차순 정렬
        //o1+o2가 o2+o1보다 큰 경우 음수 반환 -> 자리 변화x
        Arrays.sort(arr, (o1,o2)-> -(o1+o2).compareTo(o2+o1));

        //문자 붙이기
        for (String s : arr) {
            answer += s;
        }
        //배열 요소가 모두 0인 경우☆
        if(answer.charAt(0) == '0'){
            answer = "0";
        }

        return answer;
    }
}

 

 

알게 된 것 & 느낀 점

 

처음으로 풀어본 프로그래머스 문제다. 백준은 처음부터 끝까지 코드를 짜야하는데 프로그래머스는 상황을 설명해 준 뒤, 포괄적인 틀을 주고 안의 세부적인 내용을 구현하라고 한 점이 신기했다.

문제의 핵심적인 부분을 중점적으로 알 수 있어서 좋은 듯

또, 테스트 케이스마다 검사하는 부분이 달라서 특정 케이스에서 막힐 경우 다른 사용자들의 풀이를 보며 익혀야 할 부분을 찾을 수 있다는 점이 프로그래머스의 장점이라고 느껴진다.

sort를 이번으로 3-4번째 사용해 보는 만큼 더욱 간결하게 문장으로 나타낼 수 있었다. 하루하루 빠짐없이 문제 풀자 파이팅!