ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java 실습] 입력한 숫자 전체출력(순열) + 가장 작은 수 반환
    Java/Java 실습 2022. 7. 11. 18:31

    순열을 이용한 출력

    package Change;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Scanner;
    
    public class Change {
    	
    	static int[] arr = new int[4];
    	static boolean[] visited = new boolean[4];
    	static int[] result = new int[4];
    	
    	static ArrayList<Integer> list = new ArrayList<Integer>();
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int num = sc.nextInt();
    		
    		if(num > 0) {
    			for(int i=0; i<4; i++) {
    				arr[i] = (num%10);
    				num /= 10;
    			}
    		}
    		
    		permutation(num);
    		Collections.sort(list);
    		System.out.println(list);
    	}
    	
    	private static void permutation(int cnt) {
    		// 4개를 선택했으므로, 결과를 출력하고 재귀를 종료한다.
    		String tmp = "";
    		if (cnt == 4) {
    			if (result[0] == 0) {	// 앞자리가 0이면 무시
    				return;
    			}			
    			for(int i:result)
    				tmp += i;
    			if(!list.contains(Integer.parseInt(tmp)))
    				list.add(Integer.parseInt(tmp));
    			
    			return;
    		}
    		// 대상 집합을 순회하며 숫자를 하나 선택한다.
    		for (int i = 0; i < 4; i++) {
    			// 이미 해당 숫자를 선택한 경우에는 스킵.
    			if (visited[i]) {
    				continue;
    			}
    			// 선택하지 않은경우, 선택했다는 표시를 해준다.
    			visited[i] = true;
    			// 숫자를 담는다.
    			result[cnt] = arr[i];
    			// 자신을 재귀 호출한다.
    			permutation(cnt + 1);
    			// 선택을 해제한다.
    			visited[i] = false;	
    		}
    	}
    }

     

    가장 작은 수 반환

    package Change;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Scanner;
    
    public class Change {
    	
    	public static void main(String[] args) {
    		int num;
    		
    		Scanner sc = new Scanner(System.in);
    		System.out.print("4자리 숫자를 입력하세요. : ");
    		num = sc.nextInt();
    		ArrayList<Integer> arr = new ArrayList<Integer>();
    		
    		while(num > 0) {
    			for(int i=0; i<4; i++) {
    				arr.add(num%10);
    				num /= 10;
    			}
    		}
    		
    		Collections.sort(arr);
    		
    		Integer numArray[] = arr.toArray(new Integer[4]);
    		
    		if (numArray[0] == 0) {
    			for (int i=1; i<numArray.length;i++) {
    				if(numArray[i] != 0) {
    					numArray[0] = numArray[i];
    					numArray[i] = 0;
    					break;
    				}
    			}
    		}
    		
    		for(int i = 0; i<numArray.length;i++)
    			System.out.print(numArray[i]);
    	}
    }
Designed by Tistory.