본문 바로가기
백준

[백준 16926] 배열 돌리기 1, C++

by 황인태(intaehwang) 2020. 3. 12.
반응형

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

 

16926번: 배열 돌리기 1

크기가 N×M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다. A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5] ↓ ↑ A[2][1] A[2][2] ← A[2][3] ← A[2][4] A[2][5] ↓ ↓ ↑ ↑ A[3][1] A[3][2] → A[3][3] → A[3][4] A[3][5] ↓ ↑ A[4][1] → A[4][2] → A[4][3] → A[4][4] → A[4

www.acmicpc.net

본 문제는 시뮬레이션 문제다. 문제의 설명은 링크를 참고하길 바란다. 배열의 크기는 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
Buy me a coffeeBuy me a coffee

댓글