반응형
프로그래머스 정수 내림차순으로 배치하기 - JAVA
문제 설명
- 함수 solution은 정수 n을 매개변수로 입력받는다.
- n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴.
예를들어 n이 118372면 873211을 리턴.
제한 조건
- n은 1이상 8000000000 이하인 자연수.
문제 풀이 1
- n % 10 을 하여 일의 자리 수를 리스트에 추가.
- n /= 10 을 하여 n의 십의자리를 일의 자리로 만든다.
- 1 ~ 2 를 반복하여 n의 모든 자릿수를 리스트에 추가.
- 역순으로 정렬하여 큰것부터 작은 순으로 정렬.
- 리스트를 순회하며 정렬된 정수를 리턴.
소스 코드 1
import java.util.*;
class Solution {
public long solution(long n) {
long answer = 0;
List<Integer> list = new ArrayList<>();
while (n != 0) { // 3
list.add((int)(n % 10)); // 1
n /= 10; // 2
}
Collections.sort(list, Collections.reverseOrder()); // 4
for (int t : list) { //5
answer = (answer * 10) + t;
}
return answer;
}
}
문제 풀이 2
- n의 각 자릿수를 문자열에 넣어 문자열 배열을 만든다.
- char형이 아닌 string으로 만듬으로서 Collections.reverseOrder()를 사용하여 역순으로 정렬이 가능하다.
- split("")를 수행하므로 각 자릿수로 문자열을 쪼깨어 문자열 배열을 만들 수 있다.
- 문자열 배열을 역순으로 정렬한다.
- 정렬된 문자열 배열을 하나의 문자열로 만든다.
- 3에서 만든 문자열을 Long형으로 변경한 뒤 리턴.
소스 코드 2
import java.util.*;
class Solution {
public long solution(long n) {
String[] arr = String.valueOf(n).split(""); // 1
Arrays.sort(arr, Collections.reverseOrder()); // 2
StringBuilder sb = new StringBuilder(); // 3
for (String s : arr) {
sb.append(s);
}
return Long.parseLong(sb.toString()); //
}
}
반응형
'알고리즘(Algorithm) > 프로그래머스(Programmers)' 카테고리의 다른 글
[프로그래머스] 제일 작은 수 제거하기 - JAVA (0) | 2021.11.02 |
---|---|
[프로그래머스] 정수 제곱근 판별 - JAVA (0) | 2021.11.02 |
[프로그래머스] 자연수 뒤집어 배열로 만들기 - JAVA (0) | 2021.10.31 |
[프로그래머스] 자리수 더하기 - JAVA (0) | 2021.10.31 |
[프로그래머스] 이상한 문자 만들기 - JAVA (0) | 2021.10.31 |