회전으로 코드 축소하기
문제에 따라 행렬에 방향으로 로직을 짜는 경우가 생긴다.
예시문제 : 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];
}
}
'🛡️ 코딩테스트 > 🛡️ 코테 : 알고리즘' 카테고리의 다른 글
최대 증가 부분 수열 (LIS : Longest Increasing Subsequence) (0) | 2025.01.26 |
---|---|
C++ 인풋이 소수점으로 주어질 때 정수 변환시 주의 (0) | 2025.01.24 |
에라토스테네스의 체 (0) | 2025.01.24 |
투 포인터 알고리즘 (0) | 2025.01.24 |
이분 탐색 (이진 탐색) (0) | 2025.01.18 |