2025
01.25

회전으로 코드 축소하기

문제에 따라 행렬에 방향으로 로직을 짜는 경우가 생긴다.

 

예시문제 : 12100 - 2048(Easy)

https://www.acmicpc.net/problem/12100

 

보통 2방향이나 4방향의 로직을 중복해서 짤 필요는 없으므로

한 쪽 방향으로 코드를 작성한 후, 2차원 컨테이너를 회전시켜서 적용하는 것이 간편하다.

 

x축 y축 만 사용하는 경우 전치행렬만 만들면 되니 간단하지만

4방향을 체크해야하는 경우 90도 회전시켜주는 코드가 필요하다.

 

시계 방향으로 90도 회전

vector<vector<int>> rotated(width, vector<int>(height));

for (int y = 0; y < height; ++y) {
    for (int x = 0; x < width; ++x) {
        rotated[x][height - 1 - y] = matrix[y][x];
    }
}

 

반시계 방향으로 90도 회전

vector<vector<int>> rotated(width, vector<int>(height));

for (int y = 0; y < height; ++y) {
    for (int x = 0; x < width; ++x) {
        rotated[width - 1 - x][y] = matrix[y][x];
    }
}