From 818ff32090d6333927c44ad663ba2f676b96d864 Mon Sep 17 00:00:00 2001 From: rl544 <111494264+rl544@users.noreply.github.com> Date: Thu, 5 Jan 2023 19:01:57 +0900 Subject: [PATCH] =?UTF-8?q?uploaded=20at=202023.=201.=205.=20=EC=98=A4?= =?UTF-8?q?=ED=9B=84=207:01:57?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- programmers/가장 큰 수/solution.java | 60 ++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 programmers/가장 큰 수/solution.java diff --git a/programmers/가장 큰 수/solution.java b/programmers/가장 큰 수/solution.java new file mode 100644 index 0000000..09e90ed --- /dev/null +++ b/programmers/가장 큰 수/solution.java @@ -0,0 +1,60 @@ +// [문제 링크]: https://school.programmers.co.kr/learn/courses/30/lessons/42746# + +import java.util.*; +import java.lang.StringBuilder; +class Solution { + public String solution(int[] numbers) { + String answer = ""; + Comp comp = new Comp(); + StringBuilder sb = new StringBuilder(); + String[] nb = new String[numbers.length]; + for(int a = 0; a < numbers.length; a++){ + nb[a] = String.valueOf(numbers[a]); + } + Arrays.sort(nb,comp); + for(String s : nb) sb.append(s); + return (sb.charAt(0)=='0')?"0":sb.toString(); + } + public class Comp implements Comparator { + public int compare(String a, String b) { + int temp = 0, end = Math.min(a.length(),b.length())-1; + int l = Integer.parseInt(a+b), r = Integer.parseInt(b+a); + while(true){ + if(a.charAt(temp) < b.charAt(temp)) return 1; + else if(a.charAt(temp) > b.charAt(temp)) return -1; + if(temp < end) temp++; + else break; + } // 이거 통과헸다는 것은 동일 길이까지 전부 같다는 것. + if(a.length()==b.length()) return 0; // 이건 0 0 0 0 대비 + if(a.length()>b.length()){ + int tt = end+1, te = b.length(), mm = a.length(); + // System.out.println(a+" "+b); + while(true){ + if(a.charAt(tt)>b.charAt(tt%te)) return -1; + else if (a.charAt(tt)==b.charAt(tt%te)) { + if(tt >= mm-1){ + if(l>r) return -1; + else return 1; + } + else tt++; + } + else return 1; + } + + } else { + int tt = end+1, te = a.length(), mm = b.length(); + while(true){ + if(b.charAt(tt)>a.charAt(tt%te)) return 1; + else if (b.charAt(tt)==a.charAt(tt%te)) { + if(tt >= mm-1) { + if(l