SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
www.swexpertacademy.com
풀이
- 입력받은 배열을 처음에 90도 돌려서 새로운 배열에 저장해준다.
- 위에도 90도 돌린 배열을 다시 돌리면 180도가 되고 다시 이 배열을 돌리면 270도가 된다.
- 90도씩 회전하는 rotate함수
- 새로운 배열에 배열을 돌려서 저장한 후에 새로운 배열을 리턴한다.
- 90도를 돌리면 1행이 N열로, 2행이 N-1열로, ,,, , N행이 1열로 된다.
- 새로운 배열에서 N열부터 감소해가며 모든 열을 채워준다.
- 각 열에서는 1행부터 순서대로 채워준다.
import java.io.*;
import java.util.*;
public class Solution {
static int N;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for(int tc=1; tc<=T; tc++) {
N = Integer.parseInt(br.readLine());
int[][] arr = new int[N][N];
StringTokenizer st;
for(int i=0; i<N; i++) {
st = new StringTokenizer(br.readLine());
for(int j=0; j<N; j++) {
arr[i][j] = Integer.parseInt(st.nextToken());
}
}
//기존의 배열을 90도 회전
int[][] arr90 = rotate(arr);
//90도 회전한 배열을 다시 90도 회전 == 180도 회전
int[][] arr180 = rotate(arr90);
//180도 회전한 배열을 다시 90도 회전 == 270도 회전
int[][] arr270 = rotate(arr180);
System.out.println("#"+tc);
for(int i=0; i<N; i++) {
//90도 회전 배열 출력
for(int j=0; j<N; j++) {
System.out.print(arr90[i][j]);
}
System.out.print(" ");
//180도 회전 배열 출력
for(int j=0; j<N; j++) {
System.out.print(arr180[i][j]);
}
System.out.print(" ");
//270도 회전 배열 출력
for(int j=0; j<N; j++) {
System.out.print(arr270[i][j]);
}
System.out.println();
}
}
}
//90도 회전시키는 함수
static int[][] rotate(int[][] arr) {
int[][] newarr = new int[N][N]; //새로운 배열에다 회전한 값을 넣어준다.
int k = 0; //기존 배열의 행을 가르키는 index
for(int j=N-1; j>=0; j--) {
for(int i=0; i<N; i++) {
//새로운 배열에는 마지막 열(N-1)부터, 각 열에서는 첫 행(0)부터 채워준다.
//기존 배열의 k행 i열값을 넣어준다. (0행0열부터 순차대로 넣어준다)
newarr[i][j] = arr[k][i];
}
k++;
}
return newarr;
}
}
'SWEA > D2' 카테고리의 다른 글
| [SWEA] 1954. 달팽이 숫자 (0) | 2019.05.14 |
|---|---|
| [SWEA] 1959. 두 개의 숫자열 (0) | 2019.05.14 |
| [SWEA] 1974. 스도쿠 검증 (0) | 2019.05.03 |
| [SWEA] 1970. 쉬운 거스름돈 (0) | 2019.05.03 |
| [SWEA] 1979. 어디에 단어가 들어갈 수 있을까 (0) | 2019.05.02 |