1000~9999사이의 네 자리 정수가 있다네자리 숫자의 자리를 교차하여 가장 작은수로 변경하는 프로그램을 작성해보자(단, 0이 첫째 자리로 오도록 변경할 수는 없음)
(모든 경우의 수 출력) HashSet,ArrayList,배열 이용
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 입력받은 숫자
int num;
int temp;
// 배열로 쪼갬
int []numArr = new int[4];
String str = new String();
Scanner sc = new Scanner(System.in);
HashSet<Integer> hset =new HashSet<>();
ArrayList<Integer> al = new ArrayList<>();
Main my = new Main();
System.out.println("숫자 입력: ");
num = sc.nextInt();
str = Integer.toString(num);
for(int i=0; i<str.length();i++) {
numArr[i] = str.charAt(i)-48;//아스키코드에서 48은 0을 뜻함
}
for(int cnt=0;cnt<numArr.length;cnt++) {
for(int i=cnt;i<numArr.length;i++) {
for(int j=0;j<numArr.length;j++) {
temp = numArr[i];
numArr[i] = numArr[j];
numArr[j]=temp;
num=0;
for(int k =0;k<numArr.length;k++) {
num = num*10 +numArr[k];
}
hset.add(num);
}
}
}
for(Integer i: hset) {
if(i/1000 !=0) {
al.add(i);
}
}
for(int i=0; i<al.size();i++) {
for(int j=i+1;j<al.size();j++) {
if(al.get(i)>al.get(j)) {
temp = al.get(i);
al.set(i, al.get(j));
al.set(j, temp);
}
}
}
System.out.println(al);
}
}
실행 결과

'Java' 카테고리의 다른 글
BinarySearch (0) | 2022.07.14 |
---|---|
팩토리얼 (0) | 2022.07.14 |
100~9999999 범위를 갖는 변수 X와 X~9999999 범위를 갖는 변수 Y를 입력 받아 X와Y 사이의 모든 정돈된 수와 전체 개수를 출력하는 프로그램을 작성해라 (0) | 2022.07.11 |
숫자를 입력 받아 교차하여 가장 작은 수 출력하기 (0) | 2022.07.11 |
로또 번호를 생성한 후 등수에 따라 경우의 수 출력하기 (0) | 2022.07.11 |