알고리즘왕/Programmers

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

찌 ㅋ 2021. 5. 4. 23:49

풀이

  1. int 배열을 String 배열로 변경
  2. 문자열을 comparator로 정렬
    • str1 + str2str2 + str1를 비교 둘 중 더 크게 만드는 놈을 앞으로
  3. 앞에서부터 Stringbuilder에 넣어서 tostring으로 반환
    • 주어진 모든 숫자가 0일 경우 반환값은 "0"이어야 함

 

비고

  • ㅋㅋ ㅠㅠㅠ 한줄이면 끝나는 것을./... 정말 어려웠다 ㅠㅠ

 

 

더보기
package 연습문제.P42746_가장큰수;

import java.util.Arrays;
import java.util.Comparator;

public class Solution {

	static public String solution(int[] numbers) {
		StringBuilder answer = new StringBuilder();

		String[] n = new String[numbers.length];
		for (int i = 0; i < numbers.length; i++) {
			n[i] = "" + numbers[i];
		}

		Arrays.sort(n, new Comparator<String>() {

			@Override
			public int compare(String o1, String o2) {
				return (o2 + o1).compareTo(o1 + o2);
			}
		});

		if (n[0].equals("0"))
			return "0";

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

		return answer.toString();
	}

	public static void main(String[] args) {
		int[] n = { 6, 10, 2 };
		System.out.println(solution(n));
		int[] n2 = { 3, 30, 34, 5, 9 };
		System.out.println(solution(n2));
		int[] n3 = { 21, 212 };
		System.out.println(solution(n3));
	}

}