today_is

[ 알고리즘 ] 제일 큰 수 본문

카테고리 없음

[ 알고리즘 ] 제일 큰 수

ye_rang 2024. 6. 17. 17:51

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문 없으면 틀리니까, 참고바랍니다