반응형
int dir = 0; // direction 방향
int dy[4] = {1, 0, -1, 0};
int dx[4] = {0, -1, 0, 1};
남 -> 서 -> 북 -> 동
이렇게 각 방향을 순서대로 놓은 뒤, dir을 잘 응용하면 된다.
90도 회전의 경우
- 시계방향
dir = (dir + 1) % 4;
- 반시계방향
dir = (dir - 1 + 4) % 4;
※ dir이 음수를 갖지 않게 하기 위해 +4를 해준다.
인접한 방향으로 뒤집는 경우
- 0 <-> 3, 1 <-> 2
숫자 3에서 현재 방향(dir)을 빼면 된다.
dir = 3 - dir;
- 0 <-> 1, 2 <-> 3
비트 연산의 xor 연산을 사용하면 쉽게 변환할 수 있다.
xor은 각 비트가 서로 다를 때 1을 변환하기 때문에 dir ^ 1을 하면 쉽게 구할 수 있다.
00 <-> 01, 10 <-> 11
dir = dir ^ 1;반응형
'알고리즘 > 알고리즘 개념' 카테고리의 다른 글
| Hash c++ 개념 정리 (0) | 2023.04.14 |
|---|
댓글