-
백준 2947번: 나무 조각정렬(Sort) 2018. 7. 16. 10:49반응형
https://www.acmicpc.net/problem/2947
1. 문제
동혁이는 나무 조각을 5개 가지고 있다. 나무 조각에는 1부터 5까지 숫자 중 하나가 쓰여져 있다. 또, 모든 숫자는 다섯 조각 중 하나에만 써있다.
동혁이는 나무 조각을 다음과 같은 과정을 거쳐서 1, 2, 3, 4, 5 순서로 만드려고 한다.
첫 번째 조각의 수가 두 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
두 번째 조각의 수가 세 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
세 번째 조각의 수가 네 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
네 번째 조각의 수가 다섯 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
만약 순서가 1, 2, 3, 4, 5 순서가 아니라면 1 단계로 다시 간다.
처음 조각의 순서가 주어졌을 때, 위치를 바꿀 때 마다 조각의 순서를 출력하는 프로그램을 작성하시오.
2. 알고리즘
키워드 - 버블 정렬
3. 코드
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#include <iostream>#include <sstream>#include <string>#include <algorithm>#include <functional>#include <vector>#include <list>#include <queue>#include <deque>#include <map>#include <set>#include <stack>#include <cstring>using namespace std;#define MAX_SIZE 100#define INF 0x7fffffff#define CENDL "\n"#define ll long longvoid printArray(vector<int> arr) {for (auto a : arr) {cout << a << " ";}cout << CENDL;}int main() {cin.tie(0);std::ios::sync_with_stdio(false);int n = 5;vector<int> arr(n);for(int i=0; i<n; i++)cin >> arr[i];for(int i=0; i<4; i++) {for(int j=0; j<4-i; j++) {if (arr[j] > arr[j+1]) {swap(arr[j+1], arr[j]);printArray(arr);}}}return 0;}cs 반응형'정렬(Sort)' 카테고리의 다른 글
백준 1427번: 소트인사이트 (0) 2020.11.28 백준 9946번: 단어 퍼즐 (0) 2018.07.23 백준 1026번: 보물 (0) 2018.07.15 백준 14921번: 용액 합성하기 (0) 2018.07.03 백준 10989번: 수 정렬하기 3 (0) 2018.07.03