▷문제 : https://www.acmicpc.net/problem/2947
Note
이 문제는 알고리즘(Algorithm) → 정렬(Sort) → 거품정렬(Bubble Sort) 를 문제로 풀어 쓴 것이다.
버블정렬은 데이터의 모든 원소를 하나씩 무식하게 비교해가면서 정렬하는 기법(부르트포스(Brute Force) 의 한 종류) 으로 정렬시 원소의 이동이 거품이 수면으로 올라오는 듯한 모습을 보이기 때문에 버블(거품)정렬이라고 부른다.
버블정렬은 모든 원소를 하나씩 비교해서 원하는 정렬 규칙에 맞게 두 원소를 서로 swap 하는 과정을 거치는데 이 문제에서 정렬 규칙은 오름차순으로 나무조각 숫자를 정렬하면서 만약 swap 이 필요하다면 swap을 한후 현재 배열의 목록을 출력하는 것이 포인트다.
버블정렬 알고리즘만 이해하고 있으면 쉽게 풀수있다.
버블정렬은 데이터의 모든 원소를 하나씩 무식하게 비교해가면서 정렬하는 기법(부르트포스(Brute Force) 의 한 종류) 으로 정렬시 원소의 이동이 거품이 수면으로 올라오는 듯한 모습을 보이기 때문에 버블(거품)정렬이라고 부른다.
버블정렬은 모든 원소를 하나씩 비교해서 원하는 정렬 규칙에 맞게 두 원소를 서로 swap 하는 과정을 거치는데 이 문제에서 정렬 규칙은 오름차순으로 나무조각 숫자를 정렬하면서 만약 swap 이 필요하다면 swap을 한후 현재 배열의 목록을 출력하는 것이 포인트다.
버블정렬 알고리즘만 이해하고 있으면 쉽게 풀수있다.
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
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
.mapToInt(Integer::parseInt).toArray();
// 버블정렬에서 swap 이 이룰어질때 마다 조각의 순서를 출력해야 하면 된다.
for(int i = 0 ; i < numbers.length ; i++) {
for(int k = 0 ; k < numbers.length - i - 1 ; k++) {
if( numbers[k] > numbers[k+1]) {
swap(numbers, k, k+1);
printNumbers(numbers);
}
}
}
}
private static void swap(int[] a, int i, int j) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
private static void printNumbers(int[] numbers) {
StringBuilder builder = new StringBuilder() ;
for(int i = 0 ; i < numbers.length ; i++) {
if(i < numbers.length -1) {
builder.append(' ');
}
}
System.out.println(builder.toString());
builder = null;
}
}
Colored by Color Scripter
|
'코딩테스트(Coding Test) > 백준(Baekjoon OJ)' 카테고리의 다른 글
백준 10757 - 큰수 (문자열조작) (0) | 2019.07.03 |
---|---|
백준 9442 - Sort Me (정렬, 룩업테이블) (0) | 2019.07.03 |
백준 7785 - 회사에 있는 사람 (0) | 2019.06.28 |
백준 1620 - 나는야 포켓몬 마스터 이다솜 (0) | 2019.06.28 |
백준 5639 - 이진 검색 트리 (0) | 2019.06.28 |