[코딩테스트] 프로그래머스 - 가장 큰 수 (Java)

proman·2022년 9월 9일
0

Coding-Test

목록 보기
6/21
post-thumbnail

🎱 설명

레벨: 2
언어: Java

🥅 느낌점

해당문제가 숫자 한자리수로 하는거면 간단하게 숫자로 만들고 sorting하면되겟지만, 2자리수 이상 나올수있으면 그에따라 숫자가 문자열 형태로 붙는문제라서..
문자열로 변경후 sorting하고 String join 메서드 이용해서 배열합치는거로 마무리 지었습니다.
특별한 알고리즘이 필요없는 문제입니다..

🏓 내가 작성한 코드

import java.util.*;


class Solution {
    public String solution(int[] numbers) {
        String[] strings = new String[numbers.length];
        for (int i = 0; i < numbers.length; i++) {
            strings[i] = String.valueOf(numbers[i]);
        }

        Arrays.sort(strings, (o1, o2) -> (o2+o1).compareTo(o1+o2));
        
        return strings[0].equals("0") ? "0" : String.join("", strings);
    }
}

🎲 좋아요 많이받은 코드

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

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

        List<Integer> list = new ArrayList<>();
        for(int i = 0; i < numbers.length; i++) {
            list.add(numbers[i]);
        }
        Collections.sort(list, (a, b) -> {
            String as = String.valueOf(a), bs = String.valueOf(b);
            return -Integer.compare(Integer.parseInt(as + bs), Integer.parseInt(bs + as));
        });
        StringBuilder sb = new StringBuilder();
        for(Integer i : list) {
            sb.append(i);
        }
        answer = sb.toString();
        if(answer.charAt(0) == '0') {
            return "0";
        }else {
            return answer;
        }
    }
}

0개의 댓글