today_is
[ 알고리즘 ] 제일 큰 수 본문
https://school.programmers.co.kr/learn/courses/30/lessons/42746
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
무슨 기준으로 점수를 많이 주는건지 모르겠다.

코드
import java.util.*;
class Solution {
public String solution(int[] numbers) {
String[] newArr = new String[numbers.length];
for(int i=0; i< numbers.length; i++) {
newArr[i] = String.valueOf(numbers[i]);
}
Arrays.sort(newArr, (a, b) -> (b + a).compareTo(a + b));
StringBuilder sb = new StringBuilder();
for (String num : newArr) {
sb.append(num);
}
String largestNumber = sb.toString();
if (largestNumber.charAt(0) == '0') {
return "0";
}
return largestNumber;
}
}
한 줄씩 해석
String 배열을 새로 만들어준다
: 왜냐면 어차피 반환도 String으로 해야하는데, 값을 비교하는 것도 String으로 할란다
반복문을 이용한다 {
numbers[i]를 String으로 변환해서 newArr에 넣는다
}
Array.sort를 이용하여 String 배열의 값들을 비교하여 내림차순 정렬한다
: 큰 수가 제일 앞에 오도록 한다
StringBuilder 객체를 생성한다
반복문을 이용하여 newArr의 각각을 num이라고 한다 {
StringBuilder객체에 newArr의 값을 추가한다
: newArr의 값들을 이어 붙이는 과정이다
}
sb객체의 내용을 String으로 바꾸어 하나의 문자열을 새로운 변수 largestNumber 에 담는다
만약, largestNumber의 제일 첫번째 숫자가 0 이라면 {
0을 반환해서 예외를 처리한다
}
틀린부분
제일 앞에 0이 오는 경우는 예외로 처리해야한다.
if문 없으면 틀리니까, 참고바랍니다
