본문 바로가기

Algorithm

특정 Map 회전 시키기

반응형
기본 Map
0 1 2
3 4 5
6 7 8
90도회전
6 3 0
7 4 1
8 5 2

 

조건을 찾아보면

Map[0][0] = Map[0][2]

 

Map[0][1] = Map[1][2]

 

Map[0][2] = Map[2][0]

 

가운데 인덱스는 서로같고 양쪽 합은 행렬의 lengh -1 과 같다.

turnRight 구현
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void turnRight(int[][] m) {
        int n = m.length;
        int copy[][] = new int[n][n];
        
        for(int i=0;i<n;i++) {
            for(int j=0;j<n;j++) {
                copy[i][j] = m[n-1-j][i];
            }
        }
        
        for(int i=0;i<n;i++) {
            System.arraycopy(copy[i], 0, m[i], 0, n);
        }
 
    }
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

 

turnLeft는 어떻게 구현할까?? 물론 맵핑해도도지만 쫌만 더생각하면 

turnRight를 3번한것과 turnLeft는 동일한 결과를 얻을수가 있다.

turnLeft 구현
1
2
3
4
5
    public static void turnLeft(int[][] m) {
        for(int i=0;i<3;i++) {
            turnRight(m);
        }
    }
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
반응형

'Algorithm' 카테고리의 다른 글

유니온 파인드 : JAVA  (0) 2020.02.12
정렬  (0) 2020.02.11
JAVA : Log 함수를 이용한 자리수 구하기  (0) 2020.02.07
부분집합의 조합 구하기 : JAVA  (0) 2020.02.06
JAVA : Uppered Bounded  (0) 2020.02.03