본문 바로가기
PS 문제 풀이/Baekjoon

[BOJ] 백준 2947 나무 조각

by 까망 하르방 2021. 2. 23.
반응형

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

 

5개 숫자를 정렬하는데 교환이 발생할 때마다

현재 배열 상태를 출력해야 한다.

 

버블 정렬(Bubble Sort)을 구현하는 것에서

 

버블 정렬(Bubble Sort)

특징 - O(N2) - 서로 인접한 두 원소를 비교하여 정렬 - 한 번의 탐색으로 가장 큰 원소가 맨 뒤에 위치하게 됩니다. (오름차순 기준) 시뮬레이션 구현 코드 (오름차순 기준) #include int swap(int* a, int* b

zoosso.tistory.com

출력하는 시점을 잘 고려하면 된다.

 

구현

① 5개 숫자 입력 받기

② 위치 교환 발생 여부 처리

③ 배열 위치 교환 swap()

④ 배열 상태 출력


#include <stdio.h>
const int SIZE = 5;
int arr[SIZE];
bool flag = true;
inline void swap(int &A, int &B) {
       int temp = A; A = B; B = temp;
}

void printArr() {
       for (int i = 0; i < SIZE; ++i) {
              printf("%d ", arr[i]);
       }
       printf("\n");
}

int main() {
       // freopen("input.txt", "r", stdin);
       
       // 5개 숫자 입력 받기
       for (int i = 0; i < 5; ++i)
       {
              scanf("%d", arr + i);
       }
       // 정렬이 완성될 때까지 수행
       while (flag)
       {
              flag = false;
              for (int i = 0; i < SIZE - 1; ++i) {
                     // 한번이라도 교환 발생한 경우
                     if (arr[i] > arr[i + 1]) {
                           flag = true;
                           swap(arr[i], arr[i + 1]);
                           // 교환될 때마다 상태 출력
                           printArr();
                     }
              }
       }
}

 

반응형

댓글