-
SWEA 1961번: 숫자 배열 회전Problem Solving/SWEA 2021. 1. 16. 22:41
코딩테스트를 준비하기 위해서라면
꼭 ❗❗❗❗❗❗❗❗❗❗❗❗
알아야 하는 배열 회전 구현
위와 같은 배열이 있다고 가정할 때⬅⬆⬇➡
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(); } } } }
'Problem Solving > SWEA' 카테고리의 다른 글
[SWEA] 5650번: 핀볼 게임(C++)/Simulation (411) 2021.09.14 SWEA 1288번: 새로운 불면증 치료법/Bitmask (0) 2021.01.18 SWEA 2001번: 파리 퇴치/DP (0) 2021.01.16 SWEA 2112번: [모의 SW 역량테스트] 보호 필름 (0) 2020.05.26 SWEA 2115번: [모의 SW 역량테스트] 벌꿀채취 (0) 2020.05.26