반응형
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
- 에러
- Lazy
- 플러터
- 앱아이콘 변경
- 싱글톤
- Java
- Singleton
- Android
- 자료구조
- Kotlin
- 초기화
- 알고리즘
- 플러터 동작
- IOS
- dart
- element tree
- dfs
- 프리즈드
- 프로그래머스
- linebreak
- flutter
- Render object tree
- 재귀
- 거리알고리즘
- 코틀린
- 비동기 처리
- zwj
- 완전탐색
- Widget Tree
- 자바
Archives
- Today
- Total
모바일 개발하는 자바리안의 메모장
자바(JAVA) - 가장 큰 수(Programmers : 42746) 본문
반응형
https://programmers.co.kr/learn/courses/30/lessons/42746
Comparator 를 이용한 정렬 문제로 답을 구할 수 있는 문제. Output은 주어진 정수를 나열하였을 때 가장 큰 수를 반환해야 함 되어야 함. 처음엔 Integer 연산으로 결과값을 만들어보려 했지만, String으로 변환 & 정렬을 통해 훨씬 효율적인 방법으로 해답을 만들어낼 수 있었음.
실행 순서는 다음과 같다 :
1. Input int[] > String[]로 변환
2. Comparator를 사용하여 String 정렬
* String s1, s2 를 args로 받는 Comparator로 두 스트링의 Concat. 값이 더 큰 것부터 정렬
3. 정렬한 Array 의 모든 값 Concat.
4. 결과값이 0인 경우에 대한 추가 조건문
* 맨 앞자리가 0이면 0 반환
<코드>
import java.util.*;
class Solution {
public String solution(int[] numbers) {
int len = numbers.length;
String[] result = new String[len];
// 숫자 > String으로 파싱하여 array에 입력
for(int i = 0; i < len; i++)
result[i] = numbers[i] + "";
// Lambda 를 이용한 Comparetor 생성
// 두개 String(s1,s2) 의 Concat 값이 큰 것부터 오도록 정렬
Comparator<String> com = (s1, s2) -> (s2 + s1).compareTo(s1+ s2);
// String Array 정렬
Arrays.sort(result, com);
String answer = "";
for(String s : result)
answer += s;
if(answer.charAt(0) == '0')
return "0";
return answer;
}
}
반응형
'Java > Java.algorithm' 카테고리의 다른 글
자바(JAVA) - 크레인 인형뽑기 게임(Programmers : 64061) (0) | 2021.06.10 |
---|---|
자바(JAVA) - 타겟 넘버(Programmers : 43165) (0) | 2021.06.10 |
자바(JAVA) - 모두 0으로 만들기(Programmers : 76503) (0) | 2021.06.10 |
자바(JAVA) - 게임 맵 최단거리(Programmers : 1844) (0) | 2021.06.10 |
자바(JAVA) - 모의고사(Programmers : 42840) (0) | 2021.06.10 |
Comments