ALGORITHM/이론

JAVA 2차원 시계방향으로 90도 돌리기

SZCODE 2022. 4. 7. 23:54

 

왼쪽 배열을 시계방향으로 돌리면 오른쪽과 같습니다. 색깔대로 규칙을 확인해보면 다음과 같습니다.

 

이제 시계방향으로 직접적으로 돌리기 위해서 배열의 좌표 위치를 활용하겠습니다.

 

원래 위치 -> 시계방향 90도 돌린 후 위치는 이렇게 됩니다.

돌린 후 배열의 행은 원래 배열의 열과 같고

돌린 후 배열의 열은 (원래 배열의 최대 인덱스 - 원래 배열의 행)과 같다는 것을 알 수 있습니다. 여기서는 최대 인덱스가 2입니다.

 

[0,0] -> [0,2]

[0,1] -> [1,2]

[0,2] -> [2,2]

2-0 = 2

 

[1,0] -> [0,1]

[1,1] -> [1,1]

[1,2] -> [2,1]

2-1= 1

 

[2,0] -> [0,0]

[2,1] -> [1,0]

[2,2] -> [2,0]

2-2 = 0

 

class test{
	public static void main(String[] args) {
		int[][] map = {{1,2,3},{4,5,6},{7,8,9}};
		int[][] map_copy = new int[map.length][map.length];
		
		for (int i = 0; i < map.length; i++) {
			for (int j = 0; j < map.length; j++) {
				map_copy[i][j] = map[map.length-1-j][i];
                
				//map_copy[i][j] = map[j][map.length-1-i];//반 시계 방향 90도
			}
		}	
	}
}

 

관련 문제 : https://www.acmicpc.net/problem/20058

'ALGORITHM > 이론' 카테고리의 다른 글

StringBuilder란  (0) 2023.08.23
우선순위 큐 (Priority Queue)  (0) 2022.10.09
[Java] 2차원 배열 정렬  (0) 2021.06.30
Bubble Sort. 버블정렬  (0) 2021.01.05
Insertion sort. 삽입정렬  (0) 2021.01.04