728x90
코딩 테스트 풀이 체크리스트 |
|
2시간 내에 풀었는가? | O |
본인의 실력으로 풀었는가? | O |
코딩테스트 연습 - 가장 큰 수
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰
programmers.co.kr
import java.util.*;
class Solution {
public String solution(int[] numbers) {
int check = 0;
//문자열로 변경하면서 check에 모든 합 구하기
String[] nString = new String[numbers.length];
for (int i = 0; i < numbers.length; i++) {
nString[i] = Integer.toString(numbers[i]);
check += numbers[i];
}
//합이 0이면 그냥 0 바로 리턴
if (check == 0) return "0";
//정렬
//예를 들어서 n1 = 1, n2 = 123 일 때 n1+n2인 1123과 n2+n1인 1231을 비교해서
//큰 숫자로 만들어지는 걸로 내림차순 정렬하기
Arrays.sort(nString, new Comparator<String>(){
@Override
public int compare(String n1, String n2) {
int s1 = Integer.parseInt(n1 + n2);
int s2 = Integer.parseInt(n2 + n1);
return s2 - s1;
}
});
//구분자 ""로 합쳐서 리턴
return String.join("", nString);
}
}
테스트 1 〉 | 통과 (193.35ms, 132MB) |
테스트 2 〉 | 통과 (101.99ms, 124MB) |
테스트 3 〉 | 통과 (256.09ms, 130MB) |
테스트 4 〉 | 통과 (19.94ms, 82.2MB) |
테스트 5 〉 | 통과 (187.00ms, 115MB) |
테스트 6 〉 | 통과 (193.18ms, 122MB) |
테스트 7 〉 | 통과 (2.32ms, 78.2MB) |
테스트 8 〉 | 통과 (1.95ms, 73.2MB) |
테스트 9 〉 | 통과 (1.85ms, 77MB) |
테스트 10 〉 | 통과 (2.35ms, 76.6MB) |
테스트 11 〉 | 통과 (0.03ms, 75.8MB) |
테스트 12 〉 | 통과 (1.62ms, 75.3MB) |
테스트 13 〉 | 통과 (1.81ms, 77.5MB) |
테스트 14 〉 | 통과 (1.80ms, 74.4MB) |
테스트 15 〉 | 통과 (2.24ms, 73.5MB) |
728x90
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[Java] 프로그래머스 - 조이스틱 (2단계) (0) | 2022.05.25 |
---|---|
[Java] 프로그래머스 - 소수 찾기 (2단계) (0) | 2022.05.24 |
[Java] 프로그래머스 - 디스크 컨트롤러 (3단계) (0) | 2022.05.17 |
[Java] 프로그래머스 - 프린터 (2단계) (0) | 2022.05.12 |
[Java] 프로그래머스 - 전화번호 목록 (2단계) (0) | 2022.05.11 |