반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [SW expert Academy] SWEA 1961번 숫자 배열 회전 자바(Java)

1) 난이도 : D2

 

2) 문제번호 : 1961번

 

3) 문제 출처

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Pq-OKAVYDFAUq&categoryId=AV5Pq-OKAVYDFAUq&categoryType=CODE&problemTitle=1961&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

2. 문제

N x N 행렬이 주어질 때,

시계 방향으로 90도, 180도, 270도 회전한 모양을 출력하라.

 

3. 제약사항

- N은 3 이상 7 이하이다.

 

4. 입력

가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.

각 테스트 케이스의 첫 번째 줄에 N이 주어지고,

다음 N 줄에는 N x N 행렬이 주어진다.

 

5. 출력

출력의 첫 줄은 '#t'로 시작하고,

다음 N줄에 걸쳐서 90도, 180도, 270도 회전한 모양을 출력한다.

입력과는 달리 출력에서는 회전한 모양 사이에만 공백이 존재함에 유의하라.

(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)

 

6. 풀이

- 첫 번째 테스트 케이스에서 90도로 돌리고 맨 위를 처음에 넣고 그다음 중간, 그 다음 아래로 나타내진다.

- 그래서, 90도, 180도, 270도 별로 구해서 출력을 하면 된다.

7. 소스 코드

import java.util.*;

public class Solution {
	//회전
	public static int[][] Rotation(int[][] arr) {
		int[][] result = new int[arr.length][arr.length];
		
		//회전
		for(int i=0;i<arr.length;i++) {
			for(int j=0;j<arr.length;j++) {
				result[i][j] = arr[arr.length-j-1][i];
			}
		}
		return result;
	}
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();//테스트케이스 개수 입력
		
		for(int tc=1;tc<=T;tc++) {
			int N = sc.nextInt(); // 행렬 크기
			
			int[][] arr = new int[N][N]; //행렬 정의
			
			//배열 입력
			for(int i=0;i<N;i++) {
				for(int j=0;j<N;j++) {
					arr[i][j] = sc.nextInt();
				}
			}
			
			//회전 배열 저장
			int[][] result_90 = Rotation(arr);
			int[][] result_180 = Rotation(result_90);
			int[][] result_270 = Rotation(result_180);
			
			System.out.printf("#%d\n",tc);
			for(int i=0;i<N;i++) {
				for(int j=0;j<N; j++) {
					System.out.print(result_90[i][j]);
				}
				System.out.print(" ");
				
				for(int j=0;j<N; j++) {
					System.out.print(result_180[i][j]);
				}
				System.out.print(" ");
				
				for(int j=0;j<N; j++) {
					System.out.print(result_270[i][j]);
				}
				System.out.println();
			}			
		}
	}
}

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기