동혁이는 나무 조각을 5개 가지고 있다. 나무 조각에는 1부터 5까지 숫자 중 하나가 쓰여져 있다. 또, 모든 숫자는 다섯 조각 중 하나에만 쓰여 있다.
동혁이는 나무 조각을 다음과 같은 과정을 거쳐서 1, 2, 3, 4, 5 순서로 만들려고 한다.
처음 조각의 순서가 주어졌을 때, 위치를 바꿀 때 마다 조각의 순서를 출력하는 프로그램을 작성하시오.
첫째 줄에 조각에 쓰여 있는 수가 순서대로 주어진다. 숫자는 1보다 크거나 같고, 5보다 작거나 같으며, 중복되지 않는다. 처음 순서는 1, 2, 3, 4, 5가 아니다.
두 조각의 순서가 바뀔때 마다 조각의 순서를 출력한다.
2 1 5 3 4
1 2 5 3 4
1 2 3 5 4
1 2 3 4 5
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int[] numbers = new int[5];
for (int i = 0; i < 5; i++) {
numbers[i] = Integer.parseInt(st.nextToken());
}
int[] target = {1, 2, 3, 4, 5};
while (!Arrays.equals(numbers, target)) {
for (int i = 0; i < numbers.length - 1; i++) {
if (numbers[i] > numbers[i + 1]) {
int temp = numbers[i];
numbers[i] = numbers[i + 1];
numbers[i + 1] = temp;
// Print current state
StringBuilder sb = new StringBuilder();
for (int j = 0; j < numbers.length; j++) {
sb.append(numbers[j]);
if (j < numbers.length - 1) {
sb.append(" ");
}
}
System.out.println(sb.toString());
}
}
}
}
}