Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- vuejs #vue #js #프론트엔드 #nodejs #클라이언트사이드 #템플릿엔진
- codility
- 의존성관리
- Spring Boot
- mybatis
- pom.xml
- Arrays
- HashMap
- @Scheduled
- GOF
- 스프링
- java
- Collections
- C++
- 프로젝트 구조
- 스프링 메일
- maven
- list
- Dependency
- Spring Mail
- 스프링부트
- 코딩테스트
- Spring
- spring scheduler
- 스프링 부트
- springboot
- pair
- thymeleaf
- 프로그래머스
- 스프링 스케줄러
Archives
- Today
- Total
Rooted In Develop
[프로그래머스] 가장 큰 수 / Java (List, Collections) 본문
문제 설명
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
제한 사항
-
numbers의 길이는 1 이상 100,000 이하입니다.
-
numbers의 원소는 0 이상 1,000 이하입니다.
-
정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.
입출력 예
numbers | return |
[6, 10, 2] | 6210 |
[3, 30, 34, 5, 9] | 9534330 |
풀이
1. 문자열을 더했을때, 큰 값으로 정렬한다.
2. 정렬된 순서대로 문자열에 더한다.
코드
import java.util.*;
class Solution {
public String solution(int[] numbers) {
String answer = "";
List<Integer> list = new ArrayList<>();
for(int num : numbers) {
list.add(num);
}
Collections.sort(list, (a,b) -> {
String strA = String.valueOf(a); String strB = String.valueOf(b);
return Integer.valueOf(strA+strB) - Integer.valueOf(strB+strA);
});
if(list.get(list.size()-1) == 0) {
return "0";
}
for(int i=list.size()-1; i>=0; i--) {
answer += String.valueOf(list.get(i));
}
return answer;
}
}
'Algorithm Test > Java' 카테고리의 다른 글
[Codility] Iterations - BinaryGap / Java (0) | 2020.06.14 |
---|---|
[프로그래머스] H-Index / Java (Arrays) (0) | 2020.05.06 |
[프로그래머스] K번째수 / Java (List, Collections) (0) | 2020.05.05 |
[프로그래머스] 다리를 지나는 트럭 / Java (Queue, LinkedList) (0) | 2020.05.05 |
[프로그래머스] 탑 / Java (List) (0) | 2020.05.05 |
Comments