티스토리 뷰

문제 링크

가장 큰 수

문제 조건

  • 0 또는 양수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아낸다.
  • numbers의 길이는 1 ~ 100,000 이하이다.
  • numbers의 원소는 0 ~ 1,000 이하이다.
  • 문자열로 return 한다.

변수 설명

  • 매개변수
    • numbers : 0 또는 양의 정수가 담긴 배열
  • str : numbers 크기를 갖는 String 배열
  • testcase11 : numbers 원소가 모두 0일 때 true

코드 설명

  1. str을 정렬할 때 o1+o2 와 o2+o1을 비교해서 정렬해준다.
  • 모두 0 일 때에는 0이 출력되어야 한다.

배운 점

  • compareTo
    • A와 B가 같으면 : 0
    • A가 B보다 크면 : 양수
  • A가 B보다 작으면 : 음수
  • Integer.toString(int 변수) : Int to String
  • Integer.parseInt(string 변수) : String to Int;

문제 해답


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

class comp implements Comparator<String> {
    public int compare(String o1, String o2) {
        String temp1 = o1+o2;
        String temp2 = o2+o1;
        return temp2.compareTo(temp1);
    }
}
class Solution {
    public String solution(int[] numbers) {
        String answer = "";
        int ln = numbers.length;
        String[] str = new String[ln];
        boolean testcase11 = false; // testcase11이 true면 0이 아닌 수가 numbers에 있다.
        for(int i=0;i<ln;i++){
            if(numbers[i]!= 0) testcase11 = true;
            str[i] =  Integer.toString(numbers[i]);
        }
        Arrays.sort(str, new comp());
        for(int i=0;i<ln;i++){
            answer += str[i];
        }
        if(testcase11) answer = "0";
        return answer;
    }
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함