Problem Solving/SWEA
SWEA 1961번: 숫자 배열 회전
이진2
2021. 1. 16. 22:41
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();
}
}
}
}