티스토리 뷰

728x90

https://www.acmicpc.net/problem/2947

 

2947번: 나무 조각

첫째 줄에 조각에 쓰여 있는 수가 순서대로 주어진다. 숫자는 1보다 크거나 같고, 5보다 작거나 같으며, 중복되지 않는다. 처음 순서는 1, 2, 3, 4, 5가 아니다.

www.acmicpc.net

 

버블정렬을 이용하여 구현을 해야합니다.

버블정렬은 이중 for문을 이용해서 구현합니다.

 

for i in range{                  # 1

    for j in range {             # 2

        if array[j] > array[j+1]

            swap(array[j], array[j+1])

    }

}

 

이 때, 2번째 for문을 다 수행한 후 값들을 출력한다면,

하나씩 변경된 값들을 출력하길 원하는 해당 문제의 출력 양식에 맞지 않게 결과가 나옵니다.

따라서 if 문 구절이 수행될 때 그 안에 for 문을 하나 더 입력하여 값들을 출력해야 제대로된 결과값이 출력됩니다.

 

 

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
import java.util.*;
 
public class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        StringBuilder sb = new StringBuilder();
 
        int arr[] = new int[5];
        for (int i = 0; i < 5; i++) {
            arr[i] = sc.nextInt();
        }
        sc.close();
 
        boolean chk = true;
        while (chk) {
            chk = false;
            for (int i = 0; i < 4; i++) {
                if (arr[i] > arr[i + 1]) {
                    chk = true;
 
                    int tmp = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1= tmp;
 
                    for (int j = 0; j < 5; j++) {
                        sb.append(arr[j] + " ");
                    }
                    sb.append("\n");
                }
            }
        }
 
        System.out.println(sb);
 
    }
}
cs

 

'코딩 > 자바 백준' 카테고리의 다른 글

백준 1439 뒤집기 (JAVA)  (0) 2021.09.02
백준 1913 달팽이 (JAVA)  (0) 2021.09.01
백준 16395 파스칼의 삼각형(JAVA)  (0) 2021.08.31
백준 17478 재귀함수가 뭔가요? (JAVA)  (0) 2021.08.31
백준 11652 카드 (JAVA)  (0) 2021.08.30
댓글