오답노트
[시뮬레이션] BOJ 16926번 배열 돌리기 1 본문
https://www.acmicpc.net/problem/16926
- 문제파악
NxM 배열이 주어지고 가장 밖에 원소들부터 안쪽으로 반시계 방향으로 요소들을 한 칸씩 옮긴 결과를 출력하라
- 정답
디버그 모드로 돌려서 노가다 했다.
#include "bits/stdc++.h"
using namespace std;
int n, m, t;
int arr[305][305];
int arr_tmp[305][305];
void T2B(int x, int y, int dn, int dm)
{
for (int i = x; i < dn - 1; i++)
{
arr_tmp[i + 1][y] = arr[i][y];
}
}
void L2R(int x, int y, int dn, int dm)
{
for (int i = y; i < dm - 1; i++)
{
arr_tmp[x][i + 1] = arr[x][i];
}
}
void B2T(int x, int y, int dn, int dm)
{
for (int i = dn - 1; i > x; i--)
{
arr_tmp[i - 1][y] = arr[i][y];
}
}
void R2L(int x, int y, int dn, int dm)
{
for (int i = dm - 1; i > y; i--)
{
arr_tmp[x][i - 1] = arr[x][i];
}
}
int main()
{
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(0);
cin >> n >> m >> t;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cin >> arr[i][j];
}
}
while (t--)
{
int dn = n;
int dm = m;
int dx = 0;
int dy = 0;
while (dx < dn && dy < dm )
{
T2B(dx, dy, dn, dm);
L2R(n - dx - 1, dy, dn, dm);
B2T(dx, m - dy - 1, dn, dm);
R2L(dx, dy, dn, dm);
dx++;
dy++;
dn--;
dm--;
}
memcpy(arr, arr_tmp, sizeof(int) * 305 * 305);
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout << arr[i][j] << " ";
}
cout << "\n";
}
}
'C,C++ > 코딩테스트' 카테고리의 다른 글
[시뮬레이션] BOJ 16931번 겉넓이 구하기 (0) | 2022.05.26 |
---|---|
[시뮬레이션] BOJ 16927 배열 돌리기 2 - 오답노트 (0) | 2022.05.26 |
[시뮬레이션] BOJ 16935번 배열 돌리기 3 (0) | 2022.05.24 |
[BFS] BOJ 13549번 숨바꼭질 3 (0) | 2022.05.22 |
[BFS] BOJ 13913번 숨박꼭질 4 (0) | 2022.05.22 |