반응형
문제에 나와있는대로
1. 첫 번째 조각의 수가 두 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
2. 두 번째 조각의 수가 세 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
3. 세 번째 조각의 수가 네 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
4. 네 번째 조각의 수가 다섯 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
5. 만약 순서가 1, 2, 3, 4, 5 순서가 아니라면 1 단계로 다시 간다.
의 규칙대로 진행해주면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | import java.io.FileInputStream; import java.util.*; public class Main { public static void main(String args[]) throws Exception { // Scanner sc = new Scanner(System.in); Scanner sc = new Scanner(new FileInputStream("input.txt")); int[] arr = new int[5]; int[] answer = new int[5]; for (int i = 0; i < 5; i++) { arr[i] = sc.nextInt(); } while (check(arr)) { // 1vs2, 2vs3, 3vs4, 4vs5 비교 for (int x = 0; x <= 3; x++) { // 앞의 숫자가 크고 정렬되지 않았다면 swap한다. if (compare(arr, x, x + 1) && check(arr)) { swap(arr, x, x + 1); print(arr); } } } } // x번째와 y번째 값 바꾸기 public static void swap(int[] arr, int x, int y) { int swap; swap = arr[x]; arr[x] = arr[y]; arr[y] = swap; } // x번째와 y번째 값 비교하기 public static boolean compare(int[] arr, int x, int y) { if (arr[x] > arr[y]) { return true; } return false; } // 나무조각 5개이기 때문에 1,2,3,4,5 로 정렬됐는지 체크 public static boolean check(int[] arr) { boolean flags = false; for (int i = 0; i < 5; i++) { if (arr[i] != (i + 1)) { flags = true; break; } } return flags; } //출력문 public static void print(int[] arr) { for (int i = 0; i < 5; i++) { System.out.print(arr[i] + " "); } System.out.println(); } } | cs |
반응형
'나는요 공부가 좋....은걸... > 알고리즈음' 카테고리의 다른 글
[BOJ] 백준 10815 - 숫자카드 (자바) (0) | 2018.01.22 |
---|---|
[BOJ] 백준 2751 - 수 정렬하기 2 (자바) (0) | 2018.01.19 |
[BOJ] 백준 2193 - 이친수 (자바) (0) | 2018.01.18 |
[BOJ] 백준 10825 - 국영수 (자바) (0) | 2018.01.13 |
[BOJ] 백준 2399 - 거리의 차이 (자바) (0) | 2018.01.13 |