1961. 숫자 배열 회전

SW 업무 관련/SW Expert Academy

1961. 숫자 배열 회전

WillBe_ 2018. 7. 3. 23:41

규칙만 찾으면 간단한 문제인데...

이 문제처럼 테스트 케이스의 아웃풋을 주지 않았으면 엄청 헤맸을 것이다ㅜ,ㅠ


배열 순서 뒤섞고 하는 문제 왜케 어렵지....




출력 결과값을 보면 규칙을 찾을 수 있다.


규칙은 종이를 버려서..다시 그리기 귀찮아 자세히 적기는 그렇지만


배열의 크기에 상관없이 90도 돌릴 때 마다 원래 배열에서 일정한 규칙으로 출력하면 된다!!!


처음에 숫자로 *10해가면서 더해주었는데....맨 앞이 0이면 틀리더군!!


그래서 3차원 배열로 문자열 사용해서 풀었다!!!


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
#include <stdio.h>
#include <string.h>
 
int map[10][10];
char result[10][10][100];
 
int main()
{
    int Test;
    scanf("%d"&Test);
    for (int i = 1; i <= Test; i++)
    {
        int size;
        scanf("%d"&size);
        memset(map, 0sizeof(map));
        memset(result, 0sizeof(result));
 
        for (int a = 0; a < size; a++)
        {
            for (int b = 0; b < size; b++)
            {
                scanf("%d",&map[a][b]);
            }
        }
 
        for (int a = 0; a < size; a++)
        {
            int num1 = 0, num2 = 0, num3 = 0;
 
            for (int b = 0; b < size; b++)
            {
                result[a][0][b] = map[size - 1 - b][a] + '0';
                result[a][1][b] = map[size - 1 - a][size - 1 - b] +'0';
                result[a][2][b] = map[b][size - 1 - a] + '0';
            }
        }
 
        printf("#%d\n", i);
        for (int a = 0; a < size; a++)
        {
            for (int b = 0; b < 3; b++)
            {
                printf("%s ", result[a][b]);
            }
            printf("\n");
        }
        
    }
 
    return 0;
}
cs