반응형
문제 링크 - 12933번
코딩테스트 연습 - 정수 내림차순으로 배치하기 | 프로그래머스 (programmers.co.kr)
문제 이해하기
선택정렬 내림차순 {5, 7, 1, 3}
5, 7 비교 :5 < 7
이므로 자리 교체{7, 5, 1, 3}
7, 1 비교 :7 > 1
이므로 그대로{7, 5, 1, 3}
7, 3 비교 :7 > 3
이므로 그대로{7, 5, 1, 3}
{7, 5, 1, 3}
5, 1 비교 :5 > 1
이므로 그대로{7, 5, 1, 3}
5, 3 비교 :5 > 3
이므로 그대로{7, 5, 1, 3}
{7, 5, 1, 3}
1, 3 비교 :1 < 3
이므로 자리 교체{7, 5, 3, 1}
{7, 5, 3, 1}
문제 풀이
1번 풀이
public long solution(long n) {
char[] sort = String.valueOf(n).toCharArray();
int tmp = 0;
for(int i=0; i<sort.length; i++) {
for(int j=i+1; j<sort.length; j++) {
if(sort[i] < sort[j]) {
tmp = sort[i];
sort[i] = sort[j];
sort[j] = (char) tmp;
}
}
}
return Long.parseLong(String.valueOf(sort));
}
2번 풀이
public long solution(long n) {
String[] nArr = String.valueOf(n).split("");
Arrays.sort(nArr);
StringBuilder sb = new StringBuilder();
for (int i = nArr.length - 1; i >= 0; i--) sb.append(nArr[i]);
return Long.parseLong(sb.toString());
}
배열을 정렬해주는 정렬 메소드 Arrays.sort()
를 사용
정렬된 배열을 역순으로 가져오면 된다.
Collections.reverseOrder()
를 사용하면 바로 내림차순 정렬이 가능하다.
3번 풀이
public long solution(long n) {
StringBuilder sb = new StringBuilder();
String.valueOf(n).chars()
.mapToObj(ch -> (char) ch)
.sorted(Comparator.reverseOrder())
.forEach(ch -> sb.append(ch));
return Long.parseLong(sb.toString());
}
chars()
메소드로String
을IntStream
으로 가져온다.Int
를Char
형식으로 변환한다.내림차순 정렬한다.
StringBuilder
에 담은 후Long
타입으로 변환하여 반환한다.
반응형
'Algorithm > Java' 카테고리의 다른 글
프로그래머스 - 약수의 합 java :: 12928 (0) | 2022.01.02 |
---|---|
프로그래머스 - 자릿수 더하기 java (0) | 2021.12.28 |
프로그래머스 - 제일 작은 수 제거하기 java (0) | 2021.12.22 |
프로그래머스 - 최대공약수와 최소공배수, 유클리드 호제법 java (0) | 2021.12.22 |
프로그래머스 - 핸드폰 번호 가리기 java (0) | 2021.12.21 |