본문 바로가기

CodingTEST

[SW Expert D2] 1961. 숫자 배열 회전

반응형

1961. 숫자 배열 회전

 

SW Expert Academy

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

swexpertacademy.com

 

문제 분석

 

  • N x N 행렬을 시계 방향으로 90도, 180도, 270도 회전한 모양을 출력해라
    • 출력 모양
      첫번째 줄 : [90도 회전시 첫번째 줄] [180도 회전시 첫번째 줄] [270도 회전시 첫번째 줄] 
      두번째 줄 : [90도 회전시 두번째 줄] [180도 회전시 두번째 줄] [270도 회전시 두번째 줄] 
      N번째 줄 : [90도 회전시 N번째 줄] [180도 회전시 N번째 줄] [270도 회전시 N번째 줄] 

 

해결 포인트

 

  • 90도 회전시 N번째 줄 출력
for (int k = 1; k <= N; k++) {
    System.out.print(nums[N-k][i]);
}

 

  • 180도 회전시 N번째 줄 출력
for (int k = 1; k <= N; k++) {
    System.out.print(nums[N-i-1][N-k]);
}

 

  • 270도 회전시 N번째 줄 출력
for (int k = N; k >= 1; k--) {
    System.out.print(nums[N-k][N-i-1]);
}

 

코드

 

import java.util.Scanner;
import java.io.FileInputStream;

class Solution
{
    public static void main(String args[]) throws Exception
    {
        //System.setIn(new FileInputStream("res/input.txt"));

        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[][] nums = new int[N][N];
            for (int i = 0; i < N; i++) {
                for (int j = 0; j < N; j++) {
                    nums[i][j] = sc.nextInt();
                }
            }

            System.out.println("#"+test_case);
            for (int i = 0; i < N; i++) {
                for (int k = 1; k <= N; k++) {
                    System.out.print(nums[N-k][i]);
                }
                System.out.print(" ");
                for (int k = 1; k <= N; k++) {
                    System.out.print(nums[N-i-1][N-k]);
                }
                System.out.print(" ");
                for (int k = N; k >= 1; k--) {
                    System.out.print(nums[N-k][N-i-1]);
                }


                System.out.println();
            }
        }
    }
}
반응형