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
- 배열
- 백엔드
- HashMap
- 개발자
- 문자열
- spring
- 해결
- 스프링 부트
- 명령어
- Linux
- 프로그래머스
- spring boot
- bfs
- 인텔리제이
- 구름LEVEL
- 도커
- 주니어
- 코딩테스트
- 스프링
- 스타트업
- docker
- 구현
- 스프링부트
- HTTP
- Java
- 자료구조
- 이직
- 해시맵
- dfs
- IntelliJ
Archives
- Today
- Total
마이의 개발 블로그
[프로그래머스] 가장 큰 수 (Java) 본문
반응형
완전탐색으로 전체 경우의 수를 비교하기에는 데이터의 양이 너무 많기 때문에(배열 길이: 100,000) 최대값을 구할 수 있는 알고리즘을 찾아 적용해야만 하는 문제였다.
- 문자열 배열로 변환
- Comparator 재정의 (기준 : 두 개의 문자열을 앞뒤로 바꿔 붙인 2개의 수를 Integer로 변환했을 때 더 큰 수가 앞으로 오도록) 및 정렬 수행(Arrays.sort())
- StringBuilder를 활용하여 앞에서부터 문자열 전부 이어주기
- 가장 앞자리(가장 큰 수)가 0인 경우 전체가 0이기 때문에 0을 반환 (예: "0000000" -> "0")
- 0이 아닌 경우 정답 반환
Note
- Comparator 작성 시 compare 함수의 리턴 타입은 int여야함
import java.util.*;
class Solution {
public String solution(int[] numbers) {
String[] arr = new String[numbers.length];
for(int i = 0; i < numbers.length; i++){
arr[i] = String.valueOf(numbers[i]);
}
Arrays.sort(arr, new Comparator<String>(){
public int compare(String s1, String s2){
return Integer.parseInt(s2 + s1) - Integer.parseInt(s1 + s2);
}
});
StringBuilder sb = new StringBuilder();
for(String str : arr){
sb.append(str);
}
return sb.charAt(0) == '0' ? "0" : sb.toString();
}
}
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 마법의 엘리베이터 (Java) (0) | 2023.02.14 |
---|---|
[프로그래머스] 소수 찾기 (Java) (0) | 2023.02.10 |
[프로그래머스] 둘만의 암호 (Java) (0) | 2023.02.04 |
[프로그래머스] 할인 행사 (Java) (0) | 2023.02.04 |
[프로그래머스] 더 맵게 (Java) (0) | 2023.02.04 |
Comments