java 배열 90도 회전(N * N, N * M)

LEE ·2022년 8월 13일

java

목록 보기
2/3

코딩 테스트 구현문제를 풀다보면 배열을 회전해야하는 문제들이 나온다.
배열을 회전 하는 것 은 여러가지 방법들이 있지만 외울때 정사각형, 직사각형 회전까지 되는 코드를 외워보자.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class test2 {

	public static int[][] rotate(int[][] Matrix){
		
		int n = Matrix.length;
		int m = Matrix[0].length;
		int[][] newMatrix = new int[m][n];
		for(int i = 0 ; i < m ; i++) {
			for(int j = 0 ; j < n ; j++) {
				newMatrix[i][j] = Matrix[n - 1 - j][i];
			}
		}
 		
		return newMatrix;
	}
	
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int n = Integer.parseInt(st.nextToken());
		int m = Integer.parseInt(st.nextToken());
		int[][] Matrix = new int[n][m];
		for(int i = 0 ; i < n ; i++) {
			st = new StringTokenizer(br.readLine());
			for(int j = 0 ; j < m ; j++) {
				Matrix[i][j] = Integer.parseInt(st.nextToken());
			}
		}
		
		int[][] newMatrix = rotate(Matrix);
		for(int i = 0 ; i < newMatrix.length; i++) {
			for(int j = 0 ; j < newMatrix[0].length; j++ ) {
				System.out.print(newMatrix[i][j]+" ");
			}
			System.out.println();
		}
		
	}

}

정사각형 회전문제가 많이 나오지만 직사각형회전 문제가 나올수도 있기 때문이다.


위 사진과 같이 직사각형도 회전되는 것을 볼수있다.

배열회전을 활용한 문제로는 2020 KAKAO BLIND RECRUITMENT 에서 나왔던 자물쇠 열쇠 문제가있다.
링크를 참고하여 문제에대해서 확인해보자 !

https://velog.io/@cse05091/%EA%B5%AC%ED%98%84-4.-%EC%9E%90%EB%AC%BC%EC%87%A0%EC%99%80-%EC%97%B4%EC%87%A0

0개의 댓글