문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 조건
- n은 1이상 8000000000 이하인 자연수입니다.
입출력 예
n | return |
---|---|
118372 | 873211 |
전체 코드
import java.util.*;
class Solution {
public long solution(long n) {
List<Long> numberList = new ArrayList<>();
while (n > 0) {
numberList.add(0,n%10);
n /= 10;
}
String answer = numberList.stream().sorted(Comparator.reverseOrder())
.map(String::valueOf)
.reduce((s1, s2) -> s1 + s2).orElse("");
return Long.valueOf(answer);
}
}
세부 풀이
while (n > 0) {
numberList.add(0,n%10);
n /= 10;
}
numberList
의 0 자리에 하나씩 add
해주는 것이다.
String answer = numberList.stream().sorted(Comparator.reverseOrder())
.map(String::valueOf)
.reduce((s1, s2) -> s1 + s2).orElse("");
Comparator.reverseOrder()
: 역방향으로 정렬해주는 것이다..map(String::valueOf)
:String
으로 변환해주는 것이다..reduce((s1, s2) -> s1 + s2).orElse("");
그 후reduce
를 통해String
형태로 값을 변환해주는 것이다.
'코딩 공부 > Programmers-Java' 카테고리의 다른 글
[programmers] 12934 정수 제곱근 판별 (0) | 2025.03.06 |
---|---|
[programmers] 12932 자연수 뒤집어 배열로 만들기 (0) | 2025.03.06 |
[programmers] 120831 짝수와 홀수 (0) | 2025.03.05 |
[programmers] 120831 짝수의 합 (0) | 2025.03.05 |
[programmers] 120829 각도기 (0) | 2025.03.05 |