최대 1 분 소요



1961. 숫자 배열 회전



🔍 문제 풀이

풀이 방법

🐙🎓 문어박사 IT편의점 선생님의 TIP

  1. 회전, 반전되는 문제들은 값이 아닌 좌표를 기준으로 판단하자!
  2. 그리고 목적지 기준으로 정리를 해야한다.


문제 도식화

i, j의 규칙성을 찾으면 된다.

assets/images/2025/1961. 숫자 배열 회전.png



💻 전체 코드

import java.io.*;
import java.util.*;

public class Solution {
    static int[][] arr;
    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());
            arr = new int[n][n];
            for(int i=0; i<n; i++){
                StringTokenizer st = new StringTokenizer(br.readLine());
                for(int j=0; j<n; j++){
                    arr[i][j] = Integer.parseInt(st.nextToken());
                }
            }

            // 회전 결과 배열 생성
            int[][] rot90 = rotate90(arr);
            int[][] rot180 = rotate90(rot90);
            int[][] rot270 = rotate90(rot180);

            // 출력
            System.out.println("#" + tc);
            for (int i = 0; i < n; i++) {
                printRow(rot90[i]);
                System.out.print(" ");
                printRow(rot180[i]);
                System.out.print(" ");
                printRow(rot270[i]);
                System.out.println();
            }
        }
    }

    // 90도 회전
    static int[][] rotate90(int[][] origin){
        int[][] result = new int[n][n];
        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
                result[i][j] = origin[n-1-j][i];
            }
        }
        return result;

    }


    static void printRow(int[] row) {
        for (int val : row) {
            System.out.print(val);
        }
    }
}


카테고리:

업데이트:

댓글남기기