Level2 정수 내림차순으로 배치하기

문제

reverseInt 메소드는 int형 n을 매개변수로 입력받습니다.
n에 나타나는 숫자를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요.
예를들어 n이 118372면 873211을 리턴하면 됩니다.
n은 양의 정수입니다.

정수를 받아서 정수 자체로는 정렬이 되지 않기때문에 문자형으로 바꾼후에 배열에 담았다. 그리고 이전에 배웠던 Arrays.sort() 에서 바로 역정렬을사용해서 정렬한후에 이걸 다시 문자열로 바꿔야되는데 방법을 찾지 못해서 그냥 쉽게 String 변수 하나 선언해서 거기에 현재 배열에 있는 값을 반복문을 통해서 하나씩 다 담았다..흠..뭔가 있을거 같은데 아직 너무 미숙한 것 같다. 그래도 정답이란다..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.Arrays;
import java.util.Collections;

public class ReverseInt {
public int reverseInt(int n){

String[] convertStr = String.valueOf(n).split("");
Arrays.sort(convertStr, Collections.reverseOrder());


String str = "";
for(int i=0; i<convertStr.length; i++) {
str += convertStr[i];
}

return Integer.parseInt(str);
}

// 아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String[] args){
ReverseInt ri = new ReverseInt();
System.out.println(ri.reverseInt(118372));
}
}

다른 사람의 풀이

Java8 lambda(?) 를 이용해서 한번에 풀었다. 문제 풀면서 이렇게 한 사람이 있겠지 싶었는데 역시나 제일 위에 이 분의 코드가 보였다.

깔끔하고 좋은 것 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class ReverseInt {
String res = "";
public int reverseInt(int n){
res = "";
Integer.toString(n)
.chars()
.sorted()
.forEach(c -> res = Character.valueOf((char)c) + res);
return Integer.parseInt(res);
}

// 아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String[] args){
ReverseInt ri = new ReverseInt();
System.out.println(ri.reverseInt(118372));
}
}
Share