문제
https://school.programmers.co.kr/learn/courses/30/lessons/42746?language=java
풀이 과정
처음 생각했던 방법은 숫자들의 자리 수를 다 맞추는 것을 생각했는데,
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();
}
}
}
'코딩문제풀이 > 프로그래머스' 카테고리의 다른 글
[Java] 프로그래머스 : 순위 검색 (0) | 2024.03.09 |
---|---|
[Java] 프로그래머스 : 거리두기 확인하기 (0) | 2023.06.26 |
[Java] 프로그래머스 : 로또의 최고 순위와 최저 순위 (0) | 2023.04.26 |
[Java] 프로그래머스 : 퍼즐 조각 채우기 (0) | 2023.04.13 |
[Java] 프로그래머스 : 프린터 (0) | 2023.04.05 |