공부/알고리즘 문제
정수 내림차순으로 배치하기
빠에야좋아
2018. 3. 4. 13:18
reverseInt 메소드는 int형 n을 매개변수로 입력받습니다.
n에 나타나는 숫자를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요.
예를들어 n이 118372면 873211을 리턴하면 됩니다.
n은 양의 정수입니다.
int형 정수의 각 자릿수를 쪼개는 것이 포인트라고 할 수 있다.
각각의 자릿수를 배열에 담아 내림차순 정렬하고, 다시 정수로 만들어주었다.
각 자릿수를 10 지수승 단위로 받으려고 했다가 꼬여서 단순히 일의 자리의 수를 가져오고 10씩 나누는 방법을 사용했다.
이 방법이 바로 생각나지 않아서 꽤 고민을 했다. 자괴감 타임...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | import java.util.Arrays; public class ReverseInt { public int reverseInt(int n){ int length=0; int temp=n; int result=0; while(temp!=0) { temp/=10; length++; } int arr[] = new int[length]; for(int i = 0; i<arr.length;i++) { arr[i] = n%10; n/=10; } Arrays.sort(arr); for (int i = 0; i < arr.length/2; i++) { int temp1; temp1 = arr[i]; arr[i] = arr[(arr.length - 1) - i]; arr[(arr.length - 1) - i] = temp1; } for(int i = 0; i<arr.length;i++) { result += arr[arr.length-1-i]*(int) Math.pow(10,i); } return result; } // 아래는 테스트로 출력해 보기 위한 코드입니다. public static void main(String[] args){ ReverseInt ri = new ReverseInt(); System.out.println(ri.reverseInt(118372)); } } | cs |