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
- 자바 public
- react ag grid
- TypeScript
- Vue3
- 자바 조건문
- MySQL
- 정보처리기사실기
- 자바 while문
- 항해99 2기
- 자바 공배수
- 이클립스 DB연동
- 자바 자동캐스팅
- 변수
- 자바 if문
- 타입스크립트
- 자바 삼항연산자
- react with typescript
- 자바 스캐너
- 자바 for문
- 자바
- 프로그래머스
- 자바 반복문
- 조코딩
- 자바 switch문
- Til
- 자바 향상된 for문
- 자바 구구단 출력
- java
- 항해99
- 자바 강제 캐스팅
Archives
- Today
- Total
뇌 채우기 공간
[프로그래머스] 가장 큰 수 java / 정렬/ Comparator, compare, compareTo 메소드로 String 오름차순 내림차순 정렬 본문
알고리즘/프로그래머스 문제풀이
[프로그래머스] 가장 큰 수 java / 정렬/ Comparator, compare, compareTo 메소드로 String 오름차순 내림차순 정렬
자바칩 프라푸치노 2021. 5. 28. 07:55
import java.util.Arrays;
import java.util.Comparator;
public class solution {
public String solution(int[] numbers) {
String answer = "";
String[] str = new String[numbers.length];
for (int i = 0; i < numbers.length; i++) {
str[i] = String.valueOf(numbers[i]);
}
Arrays.sort(str, new Comparator<String>() {
@Override
public int compare(String a, String b) {
return (b+a).compareTo(a+b);
}
});
if(str[0].equals("0")) return "0";
for(String answers : str) {
answer += answers;
}
return answer;
}
}
compareTo 메서드
: 문자열의 사전 순 값을 비교하여 그에 해당하는 int값을 리턴한다
a = b일 경우 0
a > b (좌측 값이 큰 경우) 1
a < b (좌측 값이 작은 경우) -1
Arrays.sort 를 통해서 내림차순 , 오름차순 정렬이 가능하다.
위의 코드는 내림차순 정렬이고 오름차순은 compareTo의 인자를 숫자를 바꿔주면 된다.
그나저나 왜 b+a를 하고 a+b를 하는 것일까!
그것은 바로
a와 b를 그대로 쓰게 되면 9보다 30이 크게 된다.
이 문제에서는 첫번째 숫자가 큰게 더 크므로 9가 30보다 앞에 와야한다,
그러므로 만약에 a 가 9 b가 30이라치면
a+b는 930, b+a는 309가 되는 것이다.
그렇게 하여 비교를 하여 내림차순 정렬을 한다.
그리고 정렬을 한 후 문제가 00000만 나와서 첫번째(젤 큰 숫자가) 0일 경우에는 0을 리턴해야한다.
그게 아니라면 String배열에 있는 값을 answer에 붙여서 출력한다.
728x90
'알고리즘 > 프로그래머스 문제풀이' 카테고리의 다른 글
[프로그래머스] 위장 java / HashMap 사용 (0) | 2021.06.01 |
---|---|
[프로그래머스] 전화번호 목록 java /효율성 성공! Arrays.sort (2) | 2021.05.31 |
[프로그래머스] 모의고사 java / 완전 탐색 / 완전 탐색 패턴은 나머지 연산자로 (0) | 2021.05.27 |
[프로그래머스] k번째 수 java / 배열 자르기 / 배열 정렬 /Arrays.copyOfRange (0) | 2021.05.26 |
[프로그래머스] 완주하지 못한 선수 java / Array.sort(해시로 다시 풀기 체크) (0) | 2021.05.25 |