※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 26943번 문제인 Turnering이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/26943
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 |