Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

누에나방애벌레

방향 배열(Direction Array) 본문

공부/알고리즘

방향 배열(Direction Array)

명석 2024. 7. 25. 14:45

방향 배열

방향 배열은 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