가장 큰 수

hyeongjun Jo·2022년 11월 18일
1

Programmers

목록 보기
1/7

문제


풀이

  1. 입력으로 받은 numbers를 String으로 변환시켜 배열에 저장
  2. 변환한 문자열을 합쳤을 때 사전순으로 정렬되도록 정렬알고리즘을 작성
  3. 0이 연속된 값은 0으로 바꾸도록 예외 코드 작성

코드

for (int i = 0; i < numbers.length; i++) {
    num[i] = Integer.toString(numbers[i]);
	if(numbers[i] != 0) except = false;
}

numbers를 String으로 변환 후 num 배열에 넣기
0이 아니라면 예외 x

Arrays.sort(num, (o1, o2) -> (o2 + o1).compareTo(o1 + o2));

Comparator 인터페이스를 lambda형식으로 전개
compareTo 함수는 문자열의 왼쪽부터 두 문자의 아스키코드를 비교하기 때문에 높은 수가 먼저 올 수 있도록 (o2+o1).compareTo(o1+o2)로 작성

그리고 정답배열에 대입하고 return

전체 코드


import java.util.Arrays;

public class Solution {
    public String solution(int[] numbers) {
        String answer = "";
        String[] num = new String[numbers.length];
        boolean except = true; // 000 -> 0

        for (int i = 0; i < numbers.length; i++) {
            num[i] = Integer.toString(numbers[i]);
            if(numbers[i] != 0) except = false;
        }

        Arrays.sort(num, (o1, o2) -> (o2 + o1).compareTo(o1 + o2));

        for (int i = 0; i < num.length; i++) {
            answer += num[i];
        }

        if(except) answer = "0";

        return answer;
    }
}

느낀점

compareTo 등의 대한 내용을 까먹어서 다시 정리를 하였다.

compareTo

profile
DevOps Engineer

0개의 댓글