누에나방애벌레
방향 배열(Direction Array) 본문
방향 배열
방향 배열은 2차원 평면에서 상하좌우 및 대각선 이동을 쉽게 구현하기 위한 배열입니다. 이를 통해 특정 좌표의 상하좌우 또는 대각선 방향으로의 이동을 간편하게 처리할 수 있습니다.
상하좌우 방향 배열
- 상: dy[0] = -1, dx[0] = 0
- 하: dy[1] = 1, dx[1] = 0
- 좌: dy[2] = 0, dx[2] = -1
- 우: dy[3] = 0, dx[3] = 1
#include <iostream>
using namespace std;
int dy[4] = {-1, 1, 0, 0};
int dx[4] = {0, 0, -1, 1};
struct Point {
int y;
int x;
};
int map[4][4] = {
{1, 3, 7, 2},
{2, 2, 6, 1},
{1, 4, 5, 1},
{1, 1, 2, 1}
};
int main() {
Point sp = {1, 1};
int sum = 0;
for (int i = 0; i < 4; i++) {
int ny = sp.y + dy[i];
int nx = sp.x + dx[i];
if (ny < 0 || nx < 0 || ny >= 4 || nx >= 4) continue; // 맵을 벗어나는 경우 제외
sum += map[ny][nx];
}
cout << "상하좌우 합: " << sum << "\n";
return 0;
}
위 코드에서는 특정 좌표의 상하좌우 합을 구합니다. 방향 배열을 사용하여 각 방향으로 이동한 좌표를 계산하고, 맵을 벗어나는 경우를 제외하여 합을 구합니다.
이처럼 방향 배열을 사용하면 이동 경로를 쉽게 관리할 수 있으며, struct를 사용하면 코드의 가독성을 높일 수 있습니다.
'공부 > 알고리즘' 카테고리의 다른 글
1차원 배열의 회전 (0) | 2024.08.03 |
---|---|
재귀 함수 (0) | 2024.07.26 |
Greedy 알고리즘 (0) | 2024.07.26 |
정렬 알고리즘 (0) | 2024.07.25 |
Direct Access Table (DAT) (0) | 2024.07.25 |