Programming Practice/SWEA

[SWEA] 1961. 숫자 배열 회전 - D2 (Java)

Cage 2022. 7. 5. 20:32


문제

* 해당 문제의 모든 저작권은 SWEA 측에 있으며 본 블로그는 SWEA  약관을 위배하지 않음을 명시합니다.*

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Pq-OKAVYDFAUq 


풀이

반복문을 어느정도 이해하나 확인하는 문제인가보다

일부러 N*N을 따로 따로 출력하는 게 아니라 N*3 옆으로 늘어뜨려 출력시키게 한 걸 보아 시간 초과로 발목을 잡으려나 했는데 배열이 작아서 하드코딩으로 해도 시간초과 안나더라.

근데 그러면 코드가 너무 지저분해서 대충 줄였다

해당 문제는 O(n^2)로 풀긴했는데 더 줄일 수 있는지 생각해봐야지.


소스 코드

import java.util.Scanner;
 
public class Solution
{
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
 
        int T = sc.nextInt();
 
        for (int test_case = 1; test_case <= T; test_case++) {
            int answer = 0;
             
            int[][] arr = new int[7][7];
            int N = sc.nextInt();
             
            for(int i = 0; i < N; i++) {
                for(int j = 0; j < N; j++) {
                    arr[i][j] = sc.nextInt();
                }
            }
             
            System.out.println("#" + test_case);
             
            for(int i = 0; i < N; i++) {
                for(int j = 0; j < N; j++) {
                    System.out.print(arr[N-j-1][i]);
                }
                System.out.print(" ");
                for(int j = 0; j < N; j++) {
                    System.out.print(arr[N-i-1][N-j-1]);
                }
                System.out.print(" ");
                for(int j = 0; j < N; j++) {
                    System.out.print(arr[j][N-i-1]);
                }
                System.out.println();
            }
        }
    }
}