https://www.acmicpc.net/problem/2947
2947번: 나무 조각
첫째 줄에 조각에 쓰여 있는 수가 순서대로 주어진다. 숫자는 1보다 크거나 같고, 5보다 작거나 같으며, 중복되지 않는다. 처음 순서는 1, 2, 3, 4, 5가 아니다.
www.acmicpc.net
🔔 문제 :
1~5까지 숫자가 쓰여있는 나무조각이 5개 있습니다.
처음 조각의 순서가 주어졌을 때, 아래의 순서대로 1,2,3,4,5 순서로 만들어야합니다.
- 첫 번째 조각의 수가 두 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
- 두 번째 조각의 수가 세 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
- 세 번째 조각의 수가 네 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
- 네 번째 조각의 수가 다섯 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
- 만약 순서가 1, 2, 3, 4, 5 순서가 아니라면 1 단계로 다시 간다.
따라서, 두 조각의 순서가 바뀔때 마다 조각의 순서를 출력하는 문제입니다.
🔔 Kick Point :
for loop를 이용하여, 비교하고 출력하면 더 짧은 코드를 작성 할 수 있습니다.
🔔 Code :
#include <iostream>
using namespace std;
int main() {
int wood[5];
for (int i = 0; i < 5; i++) cin >> wood[i];
while (true) {
for (int j = 0; j < 4; j++) {
if (wood[j] > wood[j + 1]) {
swap(wood[j], wood[j+1]);
for (auto i : wood) cout << i << ' ';
cout << endl;
}
}
if (wood[0] == 1 && wood[1] == 2 && wood[2] == 3 && wood[3] == 4 && wood[4] == 5) break;
}
}