※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 26943번 문제인 Turnering이다.
문제는 아래 링크를 확인하자.

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

 

26943번: Turnering

Om man vill ordna t.ex. en bordshockeyturnering där alla möter alla kan man använda sig av ett praktiskt rotationsschema som kallas round robin. Det går till så att spelarna i den första omgången möter varandra enligt figuren ovan (vi antar att ant

www.acmicpc.net

N의 크기가 충분히 작으므로, 주어지는 테이블을 라운드 수에 맞게 직접 회전시키는 시뮬레이션을 하는 것으로 문제를 해결할 수 있다.

 

글쓴이는 테이블에서 사람들이 한 번 이동시키는 함수를 만들어 필요한 횟수만큼 해당 함수를 호출하는 방식으로 코드를 작성해 문제를 해결하였다.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int N, R;
int arr[2][50];

void rotate() {
	int tmp = arr[1][1];
	for (int i = 2; i < N / 2; i++) arr[1][i - 1] = arr[1][i];
	arr[1][N / 2 - 1] = arr[0][N / 2 - 1];
	for (int i = N / 2 - 1; i > -1; i--) arr[0][i] = arr[0][i - 1];
	arr[0][0] = tmp;
}

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> N >> R;
	if (N == 2) {
		cout << "1-2";
		return 0;
	}
	for (int i = 0; i < N / 2; i++) {
		arr[0][i] = i + 1;
	}
	for (int i = 0; i < N / 2; i++) {
		arr[1][N / 2 - 1 - i] = N / 2 + i + 1;
	}

	R--;
	while (R--) rotate();

	for (int i = 0; i < N / 2; i++) cout << arr[0][i] << '-' << arr[1][i] << '\n';
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 26947 // C++] Klockan  (0) 2023.01.11
[BOJ 26936 // C++] Gourmeten  (0) 2023.01.11
[BOJ 18154 // C++] Speeding  (0) 2023.01.11
[BOJ 24184 // C++] Arabiska  (0) 2023.01.11
[BOJ 26948 // C++] Plankan  (0) 2023.01.11

+ Recent posts