티스토리 뷰
1961. 숫자 배열 회전
// 210209
import java.io.*;
import java.util.*;
public class Solution_D2_1961_숫자배열회전 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int T = Integer.parseInt(br.readLine());
for (int tc=1; tc<=T; tc++) {
int N = Integer.parseInt(br.readLine());
int[][] arr = new int[N][N];
int[][] newArr = new int[N][N];
int[][] res = new int[N][N*3];
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());
}
}
// 회전하기
for(int d=0; d<3; d++) {
for(int r=0; r<N; r++) {
for(int nr=0; nr<N; nr++) {
newArr[nr][N-1-r] = arr[r][nr];
}
}
// 배열 update
for(int r=0; r<N; r++) {
for(int c=0; c<N; c++) {
arr[r][c] = newArr[r][c];
res[r][c+N*d] = newArr[r][c];
}
}
}
System.out.println("#" + tc);
for(int r=0; r<N; r++) {
for (int c=0; c<3*N; c++) {
if (c>0 && c%N==0) System.out.print(" ");
System.out.print(res[r][c]);
}
System.out.println();
}
}
br.close();
} // main
}
자바에서 배열간 복사를 할 때
arr1 = arr2; // 로 하면 얕은 복사를 하기 때문에 arr1의 값이 바뀌면 arr2의 값도 바뀌게 된다.
깊은 복사를 하기 위해서
1. for문을 돌면서 복사를 하나씩 하거나
2. Collecion을 사용 - Arrays.copyOf(). Object.clone()
'코딩테스트 > SW Expert' 카테고리의 다른 글
[SWEA] 4789. 성공적인 공연 기획 (0) | 2021.02.21 |
---|---|
[SWEA] 1233. [S/W 문제해결 기본] 9일차 - 사칙연산 유효성 검사 (0) | 2021.02.09 |
[SWEA] 1228. [S/W 문제해결 기본] 8일차 - 암호문1 (0) | 2021.02.09 |
[SWEA] 1494. 사랑의 카운슬러 (0) | 2021.02.09 |
[SWEA] 9229. 한빈이와 Spot Mart - 조합 (0) | 2021.02.09 |
댓글