티스토리 뷰

반응형


#. 문제 


* 이 문제의 저작권은 SW Expert Academy에 있습니다.



N x N 행렬이 주어질 때,


시계 방향으로 90도, 180도, 270도 회전한 모양을 출력하라.



[제약 사항]


N은 3 이상 7 이하이다.


[입력]


가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.


각 테스트 케이스의 첫 번째 줄에 N이 주어지고,


다음 N 줄에는 N x N 행렬이 주어진다.


[출력]


출력의 첫 줄은 '#t'로 시작하고,


다음 N줄에 걸쳐서 90도, 180도, 270도 회전한 모양을 출력한다.


입력과는 달리 출력에서는 회전한 모양 사이에만 공백이 존재함에 유의하라.


(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)



#. 문제 이해

  - NxN 2차원 배열을 90도, 180도, 270도 회전한 모양을 출력



#. 풀이

  1. 단순하게 생각하면 그냥 배열을 90도씩 회전시키기 

     (90도 회전된 배열을 또 90도 회전시키면 180도 회전, 180도 회전된 배열을 또 90도 회전시키면 270도 회전)



#. 코드

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
63
64
65
66
67
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
 
public class Solution1961 {
    static int[][] arr;
    static int N;
    
    public static void run() throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int tc = Integer.parseInt(br.readLine());
        
        for(int T=0; T<tc; T++) {    // Number of test cases
            N = Integer.parseInt(br.readLine());
            arr = new int[N][N];    // array
            
            // Store a matrix in an array
            for(int i=0; i<N; i++) {    // Number of N
                StringTokenizer st = new StringTokenizer(br.readLine());
                for(int j=0; j<N; j++) {
                    arr[i][j] = Integer.parseInt(st.nextToken());
                }
            }
            
            int[][] rotation_90 = Rotation(arr);    // 90 degree rotation
            int[][] rotation_180 = Rotation(rotation_90);    // 180 degree rotation
            int[][] rotation_270 = Rotation(rotation_180);    // 270 degree rotation
            
            System.out.println("#" + (T+1));
            for(int i=0; i<N; i++) {
                for(int j=0; j<N; j++) {
                    System.out.print(rotation_90[i][j]);    // 90 degree rotated shape
                }
                System.out.print(" ");
                
                for(int j=0; j<N; j++) {
                    System.out.print(rotation_180[i][j]);    // 180 degree rotated shape
                }
                System.out.print(" ");
                
                for(int j=0; j<N; j++) {
                    System.out.print(rotation_270[i][j]);    // 270 degree rotated shape
                }
                System.out.println("");
            }
        }
    }
    
    // 90 degree rotation
    public static int[][] Rotation(int[][] arr) {
        int[][] temp_arr = new int[N][N];
        
        for(int i=0; i<N; i++) {
            for(int j=0; j<N; j++) {
                temp_arr[i][j] = arr[N-1-j][i];
            }
        }
        
        return temp_arr;
    }
    
    public static void main(String[] args) throws Exception {
        Solution1961.run();
    }
}
 
cs



#. 결과

  - Input --------------------------------------------------------

10

3

1 2 3

4 5 6

7 8 9

6

6 9 4 7 0 5

8 9 9 2 6 5

6 8 5 4 9 8

2 2 7 7 8 4

7 5 1 9 7 9

8 9 3 9 7 6

------------------------------------------------------------------


  - Output --------------------------------------------------------

#1

741 987 369

852 654 258

963 321 147

#2

872686 679398 558496

952899 979157 069877

317594 487722 724799

997427 894586 495713

778960 562998 998259

694855 507496 686278

------------------------------------------------------------------




반응형
댓글
최근에 올라온 글
최근에 달린 댓글
링크
Total
Today
Yesterday