Problem Solving/SWEA

SWEA 1961번: 숫자 배열 회전

이진2 2021. 1. 16. 22:41

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Pq-OKAVYDFAUq&categoryId=AV5Pq-OKAVYDFAUq&categoryType=CODE

 

SW Expert Academy

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

swexpertacademy.com

코딩테스트를 준비하기 위해서라면

꼭 ❗❗❗❗❗❗❗❗❗❗❗❗

알아야 하는 배열 회전 구현

 

배열의 회전

위와 같은 배열이 있다고 가정할 때⬅⬆⬇➡

90도 회전된 배열은 아래 방향()으로 인덱스 값이 증가하면서, 왼쪽 방향(⬅)으로 인덱스가 증가한다.

또한 기존의 row방향이 col방향, col방향이 row 방향으로 바뀌었으므로

 

90_degree_rotate_arr[i][j] = origin_arr[n-1-j][i]

 

라고 할 수 있다.

사실 90도 회전만 기억하면 나머지는 회전의 반복 회수만 결정해주면 된다

 

하지만 바로 하고싶을 수도 있으니 적어보자면

 

180도 회전:

180_degree_rotate_arr[i][j] = origin_arr[n-1-j][n-1-i]

 

270도 회전:

270_degree_rotate_arr[i][j] = origin_arr[n-1-i][n-1-j]

 

이다.

 

문제의 source code

import static java.util.Collections.reverseOrder;

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

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, ans = 0;
            int[][][] map = new int[4][10][10];
            n = sc.nextInt();
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                    map[0][i][j] = sc.nextInt();
                }
            }

            for (int k = 1; k <= 3; k++) {
                for (int i = 0; i < n; i++) {
                    for (int j = 0; j < n; j++) {
                        map[k][j][n - 1 - i] = map[k - 1][i][j];
                    }
                }
            }

            System.out.println("#" + test_case);
            for (int i = 0; i < n; i++) {
                for (int k = 1; k <= 3; k++) {
                    for (int j = 0; j < n; j++) {
                        System.out.print(map[k][i][j]);
                    }
                    System.out.print(" ");
                }
                System.out.println();
            }


        }
    }
}