반응형
https://www.acmicpc.net/problem/16926
본 문제는 시뮬레이션 문제다. 문제의 설명은 링크를 참고하길 바란다. 배열의 크기는 300x300 이고 회전은 1000번까지 할 수 있다. 따라서 잘 구현하면 된다.
회전은 왼쪽, 위, 오른쪽, 아래 순서로 회전시켰다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #include <cstdio> using namespace std; int d[301][301]; int main() { int n, m, r; scanf("%d %d %d", &n, &m, &r); for (int i = 0; i< n; i++) { for (int j = 0; j< m; j++) { scanf("%d", &d[i][j]); } } // 회전방향 : 왼쪽, 위, 오른쪽, 아래 while (r--) { int x1 = 0; int y1 = 0; int x2 = n-1; int y2 = 0; int x3 = n-1; int y3 = m-1; int x4 = 0; int y4 = m-1; while ( (x1 < x2) && (y1 < y4) ) { int tmp = d[x2][y2]; for (int i = x2; i > x1; i--) { d[i][y2] = d[i-1][y2]; } for (int j = y1; j < y4; j++) { d[x1][j] = d[x1][j+1]; } for (int i = x4; i < x3; i++) { d[i][y4] = d[i+1][y4]; } for (int j = y3; j > y2; j--) { d[x3][j] = d[x3][j-1]; } d[x2][y2+1] = tmp; x1 += 1; y1 += 1; x2 -= 1; y2 += 1; x3 -= 1; y3 -= 1; x4 += 1; y4 -= 1; } } for (int i = 0; i< n; i++) { for (int j = 0; j< m; j++) { printf("%d ", d[i][j]); } printf("\n"); } } | cs |
반응형
'백준' 카테고리의 다른 글
[백준 1938] 통나무 옮기기, C++ (0) | 2020.03.30 |
---|---|
[백준 1005] ACM Craft, C++ (0) | 2020.03.22 |
[백준 16234] 인구 이동, C++ (0) | 2020.03.10 |
[백준 1525] 퍼즐, C++ (0) | 2020.03.09 |
[백준 11051] 이항 계수 2, C++ (0) | 2020.03.08 |
댓글