코테 공부

[SWEXPERT] 1961. 숫자 배열 회전(자바)

DaEun_ 2022. 12. 31. 20:29

회전을 표현하고자, 배열에서 회전 값을 갱신하는 방식으로 풀었다

 

 

1) 이차원 배열의 경우, 값만 복사하기 위해서는 다음과 같이 작성한다. 

for(int i=0;i<N;i++)
	map[i]=d[i].clone();

2) 배열 주소값을 복사하기 위해서는 

map=d.clone();

 

import java.util.*;


class Solution
{
	static int d[][];
	static int N;
	
	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++)
		{
			N=sc.nextInt();
			d=new int[N][N];
			
			for(int i=0;i<N;i++) {
				for(int j=0;j<N;j++) {
					d[i][j]=sc.nextInt();
				}
			}
			
			String[][] str=new String[N][3];
			StringBuffer sb;
			
			for(int i=0;i<3;i++) {
				rotate();	
				for(int j=0;j<N;j++) {
					sb=new StringBuffer("");
					for(int k=0;k<N;k++) {
						sb.append(d[j][k]);
					}
					str[j][i]=sb.toString();
				}
			}
		System.out.println("#"+test_case);					
		for(int i=0;i<N;i++) {
			for(int j=0;j<3;j++) {
				System.out.print(str[i][j]+" ");
			}
			System.out.println();
		}
		}
	}
	
	//90도 회전 함수 
	static void rotate() {
		
		int[][] map=new int[N][N];
		
		for(int i=0;i<N;i++)
			map[i]=d[i].clone();
		
		for(int i=0;i<N;i++) {
			for(int j=0;j<N;j++) {
				d[i][j]=map[N-1-j][i];
			}
			
		}	
	}

}