[Level2]정수 내림차순으로 배치하기
by EastGlow
문제
reverseInt 메소드는 int형 n을 매개변수로 입력받습니다. n에 나타나는 숫자를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. n은 양의 정수입니다.
풀이 1
public class ReverseInt {
public int reverseInt(int n){
String result = "";
String[] array = String.valueOf(n).split("");
for(int i=0; i<array.length-1; ++i){
for(int j=i+1; j<array.length; ++j){
if(Integer.parseInt(array[i]) < Integer.parseInt(array[j])){
String temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
for(String str : array) result += str;
return Integer.parseInt(result);
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String[] args){
ReverseInt ri = new ReverseInt();
System.out.println(ri.reverseInt(118372));
}
}
자바에 포함되어 있는 정렬 관련 메서드가 있긴 하지만(arraylist의 sort라든가 reverse 등…) 그런 것들을 안 쓰고 최대한 순수 자바 기본 코드들로 풀어보았다.
풀이 2
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));
}
}
음… 말이 필요없다…ㅎㅎ
풀이 3
import java.util.Arrays;
public class ReverseInt {
public int reverseInt(int n){
String[] arr = String.valueOf(n).split("");
Arrays.sort(arr);
StringBuffer sb = new StringBuffer();
for(String tmp: arr) {
sb.append(tmp);
}
sb.reverse();
return Integer.parseInt(sb.toString());
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String[] args){
ReverseInt ri = new ReverseInt();
System.out.println(ri.reverseInt(118372));
}
}
풀이2 만큼 자바 내의 메서드를 잘 활용한 풀이이다.
Subscribe via RSS