알고리즘/삼성 SW expert Academy

[SWEA] 1961. 숫자 배열 회전_JAVA

뇌장하드 2022. 5. 7. 20:46

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5Pq-OKAVYDFAUq&categoryId=AV5Pq-OKAVYDFAUq&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=2 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

입력받은 행렬을  시계방향으로 90도씩 회전해준다.

고로 90도 회전함수만 구해주면 나머지 180,270은 구해주기 쉽다.

 

import java.util.Scanner;
class Solution{
    public static void main(String args[]) throws Exception
    {
        Scanner sc = new Scanner(System.in);
        int T;
        T=sc.nextInt();
        for(int test_case = 1; test_case <= T; test_case++)
        {
            int N=sc.nextInt();
           int [][] arr=new int[N][N];
           for(int i=0;i<N;i++)
               for(int j=0;j<N;j++)
                   arr[i][j]=sc.nextInt();
 
            System.out.println("#"+test_case);
            //돌려주기
            int [][] r_90=rotate(arr);
            int [][] r_180=rotate(r_90);
            int [][] r_270=rotate(r_180);
            for(int i=0; i<N; i++) {
                for(int j=0; j<N; j++) System.out.print(r_90[i][j]);
                System.out.print(" ");
                for(int j=0; j<N; j++) System.out.print(r_180[i][j]);
                System.out.print(" ");
                for(int j=0; j<N; j++) System.out.print(r_270[i][j]);
                System.out.println();
            }
        }
    }
 
    private static int[][] rotate(int a[][]) {
        int n=a.length;
        int[][] tmp=new int[n][n];
        for(int i=0;i<n;i++)
            for(int j=0;j<n;j++)
                tmp[i][j]=a[n-1-j][i];
        return tmp;
    }
}