[프로그래머스] 가장 큰 수

urzi·2022년 4월 4일
0

PS

목록 보기
14/36

문제

알고리즘

문자열 비교

풀이

문자열 비교 알고리즘이다.
ArrayList에 담아서 비교하는데 두 숫자를 하나씩 앞으로 보내서 붙여서 둘 중에 더 큰 숫자를 앞으로 보낸다.

[예제]
a=3, b=30 이라면,
330 과 303을 비교해서 330이 더 크다면 3을 앞으로 보내줘야 한다.

Java의 Collection.sort()를 이용하여 람다식을 사용해서 풀어보자.
정렬이 끝나고 첫 문자가 0으로 시작된다면 0을 바로 리턴해준다. 00이 나올 수도 있기 때문이다.
0이 아니라면 순서대로 answer에 담아서 리턴해준다.

코드

import java.util.*;

class Solution {
    public String solution(int[] numbers) {
        StringBuilder answer = new StringBuilder();
        ArrayList<String> fourWord = new ArrayList<>();

		// 숫자를 문자열로 바꿔서 ArrayList에 담아준다.
        for (int i = 0; i < numbers.length; i++) {
            fourWord.add(String.valueOf(numbers[i]));
        }

		// Collection sort를 이용하여 람다식을 이용해서 ab와 ba 문자열 중에 더큰 문자열을 앞으로 보낸다.
        Collections.sort(fourWord, (a, b) -> (b + a).compareTo(a + b));

        if (fourWord.get(0).startsWith("0")) {
            return "0";
        }

        for (String s : fourWord) {
            answer.append(s);
        }

        return answer.toString();
    }
}
profile
Back-end Developer

0개의 댓글