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함수를 통해 중복되는 코드를 최소화 함. 출력 하는 코드도 함수로 빼면 더 간단하게 구현할 수 있음.