새소식

💻 Programming (프로그래밍)/C++ | 백준

[C++][백준] - 나무 조각(2947번)

  • -
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, 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;
	}
}

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.