알고리즘/SW Expert Academy

[SWEA] D2 1961. 숫자 배열 회전 _Java

3o14 2023. 7. 13. 09:33
728x90
반응형

 

 

SWEA D1 1961. 숫자 배열 회전 java

 

 

🧶 문제 설명

N x N 행렬이 주어질 때,

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

 

 

제한사항

N은 3 이상 7 이하이다.

 

 

입출력 예

[입력]

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

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

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

[출력]

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

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

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

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

입력 출력
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
#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

 

 

 

 

🧶 풀이법

주어진 배열이 각각 90도, 180도, 270도로 회전했을 경우 숫자의 인덱스 이동을 위처럼 그림으로 표현하고 규칙을 찾아내서 회전한 모습을 배열로 새로 만듭니다. 규칙 코드는 아래에 있습니다.

 

 

각각의 배열을 만들어서 한줄씩 출력해줬씁니다.

 

 

🧶 코드

import java.util.Scanner;
import java.io.FileInputStream;
import java.util.Arrays;

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[][] matrix = new int[N][N];
            
            for(int i = 0; i<N; i++){
                for(int j = 0; j<N; j++){
                    matrix[i][j] = sc.nextInt();
                }
            }
            
            String[] matrix90 = new String[N];
            for(int i = 0; i<N; i++){
                String num = "";
                for(int j = 0; j<N; j++){
                    num += String.valueOf(matrix[N-1-j][i]);
                }
                matrix90[i] = num;
                
            }
            String[] matrix180 = new String[N];
            for(int i = 0; i<N; i++){
                String num = "";
                for(int j = 0; j<N; j++){
                    num += String.valueOf(matrix[N-1-i][N-1-j]);
                }
                matrix180[i] = num;
                
            }
            String[] matrix270 = new String[N];
            for(int i = 0; i<N; i++){
                String num = "";
                for(int j = 0; j<N; j++){
                    num += String.valueOf(matrix[j][N-1-i]);
                }
                matrix270[i] = num;
                
            }
			System.out.println("#" + test_case);
            for(int i = 0; i < N; i++){
                String result = "";
                result += matrix90[i] + " "; 
                result += matrix180[i] + " "; 
                result += matrix270[i] + " "; 
              System.out.println(result);
            }
		}
	}
}

 

 

🧶 후기

자바자바자바자바..

LIST