▶방향에 따른 이동 위치 값 반복문으로 구하기
알고리즘 문제를 해결하다 보면 어떤 좌표에서 4~8방향으로 이동한 위치 값이 필요한 경우가 있습니다.
만약 매번 모든 방향으로 이동한 위치 값을 확인해야 한다면 반복문을 통해 구현하는 것이 편리합니다.
예를 들어, 2차원 공간의 (x,y)의 위치에서 상/하/좌/우 네 방향으로 한 칸씩 이동한 위치 값이 필요하다면
(x는 행, y는 열을 나타냅니다!)
상 : (x-1, y)
하 : (x+1, y)
좌 : (x, y-1)
우 : (x, y+1)
이렇게 네 개의 위치 값을 구해야 합니다.
이해를 돕기 위해 (3,3)에서 상/하/좌/우 네 방향으로 이동했을 때 위치 좌표값을 나타낸 그림을 그려보았습니다.
이 네 방향의 위치 값을 편하게 구하기 위해서 아래와 같은 방법을 씁니다.
int dx[4] = {-1,1,0,0};
int dy[4] = {0,0,-1,1};
위와 같이 저장해두고
아래와 같은 식으로 반복문을 수행합니다.
for(int i=0; i<4; i++){
int nextX = x+dx[i];
int nextY = y+dy[i];
}
그러면 nextX와 nextY에 상/하/좌/우 네 방향으로 이동한 좌표 값이 차례대로 대입되게 됩니다.
이를 잘 활용하면 보다 편하게 문제를 해결할 수 있습니다.
'□ 이론 > 알고리즘' 카테고리의 다른 글
조합 생성 알고리즘 한번에 정리하기 (0) | 2020.06.05 |
---|---|
[알고리즘] 시간 복잡도 쉽게 이해하기 (0) | 2020.05.16 |
삽입 정렬(Insertion sort) (0) | 2019.06.07 |
합병 정렬 (Merge sort) (0) | 2019.06.07 |
퀵 정렬(Quick sort) (0) | 2019.06.06 |