본문 바로가기
컴퓨터공학/알고리즘 ˙ 자료구조

[알고리즘] 2차원 배열 시계 방향 회전, 180도 회전, 전치 행렬 구하기

by 독서왕뼝아리 2023. 4. 10.

외우면 구현 빠른 알고리즘

 

시계 방향 회전 (90도 회전)

// origin[ROW][COL]
// rotated[COL][ROW]

for (int i = 0; i < ROW; i++) {
    for (int j = 0; j < COL; j++) {
        rotated[j][ROW-1-i] = origin[i][j];
    }
}

 

 

반시계 방향 회전 (270도 회전)

// origin[ROW][COL]
// rotated[COL][ROW]

for (int i = 0; i < ROW; i++) {
    for (int j = 0; j < COL; j++) {
        rotated[COL-1-j][i] = origin[i][j];
    }
}

or 시계방향 * 3회

 

 

180도 회전

// origin[ROW][COL]
// rotated[COL][ROW]

for (int i = 0; i < ROW; i++) {
    for (int j = 0; j < COL; j++) {
        rotated[COL-1-i][ROW-1-j] = origin[i][j];
    }
}

or 시계방향 * 2회

 

 

전치행렬

// origin[ROW][COL]
// rotated[COL][ROW]

for (int i = 0; i < ROW; i++) {
    for (int j = 0; j < COL; j++) {
        rotated[j][i] = origin[i][j];
    }
}

 

 

+ 달팽이 알고리즘

2023.03.22 - [Develop/Algorithm] - [C++] 달팽이 알고리즘

 

[C++] 달팽이 알고리즘

정방향 행렬에서 시계 방향으로 탐색 시 N, N-1, N-1, N-2, N-2, ... , 2, 2, 1,1 순서로 값이 채워지는 규칙이 있다. 이 규칙을 이용하면 코드 축약에 도움을 준다. sign 을 사용하는 것은 x가 증가하는 쪽으

oozoowos.tistory.com