코딩문제풀이/프로그래머스

[Java] 프로그래머스 : 가장 큰 수

코딩하는 포메라니안 2023. 5. 12. 15:24

문제

https://school.programmers.co.kr/learn/courses/30/lessons/42746?language=java 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

풀이 과정

처음 생각했던 방법은 숫자들의 자리 수를 다 맞추는 것을 생각했는데,

3442, 33 일 때는 3442 > 3300으로 제대로 적용되나 3223, 32일 때는 3223 > 3200이지만 322332보다 323223이 더 크게 되어 원하는 결과를 도출할 수 없었다.

그래서 다른 사람의 코드를 대략적으로 보고난 후, 좀 더 직관적으로 생각해서, 두 숫자 중 어느 것이 앞에 왔을 때 큰 수가 될 지를 비교 기준으로 하여 정렬하였다.

import java.util.*;

class Solution {
    
    public String solution(int[] numbers) {
        int size = numbers.length;
        List<String> list = new ArrayList(size);
        for(int n : numbers){
            list.add(String.valueOf(n));
        }
        
        Collections.sort(list, (o1, o2)-> (o2+o1).compareTo(o1+o2));
        
        if(list.get(0).charAt(0) == '0'){
            return "0";
        }
        else{
            StringBuilder sb = new StringBuilder();
            for(String s : list){
                sb.append(s);
            }
            return sb.toString();
        }
    }
}