Algorithm

백준_나무 조각_2947

Young_J 2021. 1. 17. 22:37

// 알고리즘

1. 시뮬레이션

 -> 주어진 조건대로 0,1 인덱스 비교 1,2 인덱스 비교 ~ 3,4 비교 

 -> 1부터 5까지 순서대로 정렬되어있는지 확인

더보기
import java.util.*;
import java.io.*;

public class 나무조각_2947 {
	static int arr[];

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		arr = new int[5];

		for (int i = 0; i < 5; i++) {
			arr[i] = Integer.parseInt(st.nextToken());
		}

		while (true) {
			if (arr[0] > arr[1]) {
				swich(0, 1);
				for (Integer i : arr) {
					System.out.print(i + " ");
				}
				System.out.println();
			}
			if (arr[1] > arr[2]) {
				swich(1, 2);
				for (Integer i : arr) {
					System.out.print(i + " ");
				}
				System.out.println();
			}
			if (arr[2] > arr[3]) {
				swich(2, 3);
				for (Integer i : arr) {
					System.out.print(i + " ");
				}
				System.out.println();
			}
			if (arr[3] > arr[4]) {
				swich(3, 4);
				for (Integer i : arr) {
					System.out.print(i + " ");
				}
				System.out.println();
			}

			if (check(arr)) {
				break;
			}
		}

	}

	private static void swich(int i, int j) {
		int tmp = arr[j];
		arr[j] = arr[i];
		arr[i] = tmp;
	}

	private static boolean check(int[] v) {
		int index = 1;
		for (int i = 0; i < 5; i++) {
			if (index++ != v[i])
				return false;

		}
		return true;
	}

}

 

※ 간단한 시뮬레이션 문제라 쉽게 풀 수 있었음. swich 함수와 check함수를 통해 중복되는 코드를 최소화 함. 출력 하는 코드도 함수로 빼면 더 간단하게 구현할 수 있음.