/ BOJ

BOJ_2947_나무조각_JAVA

문제 : 나무조각

링크 : BOJ_2947_나무조각

접근 방식

버블정렬을 구현하면 되는 문제이다.

버블정렬을 구현하는데, 각 스텝별로 출력해가면서 구현하면 된다.

풀이 방법

  1. 5개의 값을 입력받아서 배열에 저장한다.

  2. 버블정렬을 직접 구현하여 1번 스와핑이 일어날 때마다 배열의 상태를 출력해준다.

  3. 정렬이 완료되면 프로그램을 종료한다.

소스 코드


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class BOJ_2947_나무조각 {

	public static void main(String[] args) throws NumberFormatException, IOException {

		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

		StringTokenizer st = new StringTokenizer(in.readLine()," ");
		int[] arr = new int[5];
		arr[0] = Integer.parseInt(st.nextToken());
		arr[1] = Integer.parseInt(st.nextToken());
		arr[2] = Integer.parseInt(st.nextToken());
		arr[3] = Integer.parseInt(st.nextToken());
		arr[4] = Integer.parseInt(st.nextToken());
		while(true) {
			for(int i=0;i<5;i++) {
				if(i+1 >=5)continue;

				if(arr[i] > arr[i+1]) {
					swap(arr,i,i+1);
					System.out.printf("%d %d %d %d %d\n",arr[0],arr[1],arr[2],arr[3],arr[4]);
				}
			}
			int cnt = 0;
			for(int i=0;i<5;i++) {
				if(arr[i] != i+1) {
					break;
				}
				cnt++;
			}
			if(cnt == 5) return;
		}
	}

	public static void swap(int[] arr, int a, int b) {
		int temp = arr[a];
		arr[a] = arr[b];
		arr[b] = temp;
	}
}