728x90
문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 조건- n은 1이상 8000000000 이하인 자연수입니다.
n | return |
118372 | 873211 |
1
2
3
4
5
6
7
8
9
|
import java.util.Arrays;
import java.util.Collections;
class Solution {
public long solution(long n) {
String[] ar = (n+"").split(""); // 문자열 배열
Arrays.sort(ar, Collections.reverseOrder()); // 내림차순정렬
return Long.parseLong(String.join("", ar)); // 배열을 합쳐 정수로 바꾸기;
}
}
|
cs |
String을 split()을 이용하여 1글자씩 잘라 String 배열로 만든 다음 String 배열을 역순으로 정렬하고 String.join()으로 다시 결합한 String으로 만들고 Long.parseLong()을 이용 long형으로 형변환 했습니다. |
1
2
3
4
5
6
7
8
9
10
11
|
import java.util.Arrays;
import java.util.stream.Collectors;
class Solution {
public long solution(long n) {
return Long.parseLong(new StringBuffer(Arrays.stream((n+"").split(""))
.sorted()
.collect(Collectors.joining())
).reverse().toString()
);
}
}
|
cs |
문자열을 1글씩 잘라서 배열을 만들고 스트림으로 변환하여 정렬을 수행한후 다시 String으로 만들었습니다. Arrays.stream((n+"").split("")).sorted().collect(Collectors.joining()) String을 StringBuffer객체로 만들어 뒤집기를 수행 하고 다시 String으로 만듭니다. new StringBuffer(Arrays.stream((n+"").split("")).sorted().collect(Collectors.joining())).reverse().toString() String을 long형으로 형변환 합니다. Long.parseLong(new StringBuffer(Arrays.stream((n+"").split("")).sorted().collect(Collectors.joining())).reverse().toString()); |
1
2
3
4
5
6
7
8
9
10
11
|
import java.util.Comparator;
import java.util.stream.Collectors;
class Solution {
public long solution(long n) {
return Long.parseLong((n+"").chars()
.mapToObj(v->((char)v + ""))
.sorted(Comparator.reverseOrder())
.collect(Collectors.joining())
);
}
}
|
cs |
문자열을 IntStream 만들고 mapToObj()를 이용하여 Stream<String>으로 변환후 sorted(Comparator.reverseOrder())으로 내림차순으로 정렬한 후 collect(Collectors.joining()) 으로 String으로 만든 다음
Long.parseLong()으로 형변환하면 됩니다. 프로그램에는 모범 답안이 없습니다. 여러가지 방법으로 해결해 보는것이 실력을 늘리는 방법입니다. |
728x90
'프로그래머스 코딩(자바) > Level 1' 카테고리의 다른 글
Programmers Level 1 - 하샤드 수 (0) | 2023.03.09 |
---|---|
Programmers Level 1 - 나머지가 1이 되는 수 찾기 (0) | 2023.03.09 |
Programmers Level 1 - 문자열을 정수로 바꾸기 (0) | 2023.03.08 |
Programmers Level 1 - 정수 제곱근 판별 (0) | 2023.03.08 |
Programmers Level 1 - 문자열 내 p와 y의 개수 (0) | 2023.03.08 |