알고리즘/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