Ex) reverseInt 메서그는 int형 n을 매개변수로 입력받는다. n에 나타나는 숫자를 큰 것부터 작은 순으로 정렬한 새로운 정수를 반환하라. 예를 들어 n이 118372 -> 873211을 반환하라.
<hide/>
package javaStudy;
public class ReberseInt {
public int reberseInt(int n) {
int i = 1;
//(1)
int count = 0;
while (i <= n) {
i = i * 10;
++count;
}
i = i / 10;
int arrCount = 0;
//(2)
int [] arr = new int[count];
//(3)
while(n > 0) {
arr[arrCount] = n / i;
n = n % i;
i = i / 10;
++arrCount;
}
//(4)
int temp = -1;
for(int i2 = 0 ; i2 < arr.length; ++i2) {
for( int j = i2 + 1; j < arr.length; ++j ) {
if(arr[i2] < arr[j]) {
temp = arr[i2];
arr[i2] = arr[j];
arr[j] = temp;
}
}
}
//(5)
int value = 0;
if(arr.length > 0) {
value = arr[0];
if(arr.length > 1) {
for(int i3 = 1; i3 < arr.length ; ++i3) {
value = value * 10 + arr[i3];
}
}
}
return value ;
}
public static void main(String[] args) {
ReberseInt ri = new ReberseInt();
System.out.println(ri.reberseInt(118372) );
}
}
Note) 실행결과 : 873211
(1) while (i <= n) { i = i * 10; ++count; }
- 정수의 자리수를 구한다,
(2) int [] arr = new int[count];
- 자릿수 크기 만큼의 정수배열을 선언한다.
(3) while(n > 0) { arr[arrCount] = n / i; n = n % i; i = i / 10; ++arrCount; }
- (2)에서 구한 배열에 각 자리수를 저장한다.
(4) 배열의 있는 값을 내림차순으로 정렬한다.
(5) 배열에 있는 값을 이용해 다시 정수를 만든다.
'Java > 모두의 자바' 카테고리의 다른 글
Chapter 10-63 하샤드 수 (0) | 2022.02.13 |
---|---|
Chapter 10-62 최댓값과 최솟값 (0) | 2022.02.13 |
Chapter 10-60 삼각형 출력하기 (0) | 2022.02.13 |
Chapter 10-59 문자열을 내림차순으로 배치하기 (0) | 2022.02.13 |
Chapter 10-58 서울에서 김서방 찾기 (0) | 2022.02.13 |