개발일기
정수 내리차순으로 배치하기 본문
-
정수 내림차순으로 배치하기
문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 조건- n은 1이상 8000000000 이하인 자연수입니다.
118372 | 873211 |
1. 정수 n을 받아 10자리수 단위로 배열에 넣어주어야함
2. 배열에 넣어준 값을 큰숫자부터 앞으로 나오도록 해주어야 한다.
3. 이렇게 해준 값을 합쳐주어 Long타입으로 만들어 반환해주어야함.
import java.util.*;
class Solution {
public long solution(long n) {
long answer = 0;
String []arr = Long.toString(n).split("");
Arrays.sort(arr, Collections.reverseOrder());
String number="";
for(String a: arr){
number += a;
}
answer = Long.parseLong(number);
return answer;
}
}
내가 푼 풀이는 이와 같다.
1. 우선 Long으로 들어오는 n을 String으로 나누어주어 split 메서드를 통하여 arr배열에 담아주었다. => 10단위 숫자로 나눔
2. Array.sort()함수는 정렬을 해주는데, default는 작은 숫자부터 큰숫자까지 오름차순 정렬이며 Collection.reverseOreder() 또는 Comparator.reverseOrder()둘다 내림차순 정렬이다. => 큰숫자부터 앞으로
3. for each문을 통해서 합해줌
4. Long.parseLong으로 String타입을 형변환해주었다.
인상 깊었던 풀이
public Solution {
public long solution(long n) {
return Long.parseLong(String.valueOf(n).chars().mapToObj(ch -> (char) ch)
.sorted(Comparator.reverseOrder())
.collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
.toString());
}
}
가장 적은 줄로.. 풀수 있던게 신기하여 작성하였고 collect를 이런식으로도 사용할 수 있는지 알게 되었다.
'Algorithm' 카테고리의 다른 글
콜라츠 추측(프로그래머스) (1) | 2024.02.19 |
---|---|
프로그래머스 숫자 짝꿍 (1) | 2023.12.26 |
정수 제곱근 판별 (4) | 2023.12.23 |
문자열 내 p와 y의 개수 (1) | 2023.12.17 |
나머지가 1이 되는 수 찾기 (0) | 2023.12.17 |