-
[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]); } }
'Java > Java 실습' 카테고리의 다른 글
[Java 실습] 이진 검색 재귀 함수 응용 (0) 2022.07.13 [Java 실습] Baby-gin (1) 2022.07.12 [Java 실습] 성적 관리 프로그램 (0) 2022.07.12 [Java 실습] 정돈된 수와 개수 출력하기 (0) 2022.07.11 [Java 실습] 로또 프로그램 만들기 (0) 2022.07.11