[C++]BOJ 16926号:タイル1
📝 質問する
💻 実行コード
// BOJ 16926번 : 배열 돌리기 1
#include <iostream>
using namespace std;
int main() {
int arr[301][301]; // 배열 생성
int dx[4] = {0, 1, 0, -1}; // 우상좌하
int dy[4] = {1, 0, -1, 0};
int n, m, r;
cin >> n >> m >> r;
for(int i = 0; i < n; i++){ // 배열 입력받기
for(int j = 0; j < m; j++){
cin >> arr[i][j];
}
}
for(int i = 0; i < r; i++){ // 회전 횟수만큼 반복
for(int j = 0; j < min(n, m) / 2; j++){ //
int x = j;
int y = j;
int value = arr[x][y];
int tmp = 0;
while(tmp < 4){
int nx = x + dx[tmp];
int ny = y + dy[tmp];
if(nx == j && ny == j) break;
if(nx >= j && ny >= j && nx < n - j && ny < m - j){
arr[x][y] = arr[nx][ny];
x = nx;
y = ny;
}
else
tmp++;
}
arr[j + 1][j] = value;
}
}
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
cout << arr[i][j] << " ";
}
cout << "\n";
}
}
📚 問題を解く
アレイの作成と入力の受信
繰り返し回転の回数、繰り返しアレイサイズの小部分を2で割った回数.
value,x,yをjに初期化して4を繰り返す
nxとnyで右上隅を繰り返し、nxとnyがjに等しい場合は終了します.
nxおよびnyがjより大きく、nxおよびnyがnおよびmより小さくjを減算するとarrが更新される
最後にvalueをarrに入れる[j+1][j]
実行結果
Reference
この問題について([C++]BOJ 16926号:タイル1), 我々は、より多くの情報をここで見つけました https://velog.io/@kwonjeong/C-BOJ-16926번-배열-돌리기-1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol