Java/모두의 자바

Chapter 10-61 정수 내림차순으로 배치하기

계란💕 2022. 2. 13. 15:34

  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) 배열에 있는 값을 이용해 다시 정수를 만든다.