728x90
반응형
2차원 배열에서 자주 사용되는 기법인 dx/dy 기법에 정리하려고 한다.
dx/dy 기법은 현재 내 위치에서 상화좌우, 대각선 방향으로 이동이나 탐색을 구현할 때 사용한다.
예를 들어 arr[1][1]의 상하좌우 값은 arr[0][1], arr[2][1], arr[1][0], arr[1][2] 다.
이를 인덱스로 표현한다면 아래와 같다.
dx = [0, 0, -1, 1] // 열
dy = [-1, 1, 0, 0] // 행
이를 코드로 적용해보면 아래와 같다.
let dx = [0, 0, -1, 1];
let dy = [-1, 1, 0, 0];
// 시작 위치 설정
let x = 1;
let y = 1;
// 4방향 탐색
for (let i = 0; i < 4; i++) {
let nx = x + dx[i];
let ny = y + dy[i];
console.log(nx, ny);
}
추가로 구름톤 문제에서는 대각선 방향도 포함하고 있고, 탐색을 할 때 올바른 탐색 위치인지도 확인해야 한다. 배열 밖을 나가는 탐색이 있을 수 있기 때문이다.
// 상하좌우 + 대각선
let dx = [-1, -1, -1, 0, 0, 1, 1, 1]; // 열
let dy = [-1, 0, 1, -1, 1, -1, 0, 1]; // 행
// 시작 위치 설정
let x = 1;
let y = 1;
// 8방향 탐색
for (let i = 0; i < 8; i++) {
let nx = x + dx[i];
let ny = y + dy[i];
//올바른 탐색 범위인지 확인. 배열 밖으로 나가는 탐색은 오류
if (nx >= 0 && nx < N && ny >= 0 && ny < N) {
console.log(nx, ny);
}
}
참고자료
- 구름톤 프로젝트 매니징 자료
728x90
반응형
'etc > [구름] 구름톤 챌린지' 카테고리의 다른 글
구름톤 챌린지 4주차 학습 일기 - BFS(모든 섬 방문하는 문제) (0) | 2023.09.06 |
---|---|
구름톤 챌린지 3주차 학습 일기 - DP(동적 계획법) (2) | 2023.08.29 |
구름톤 챌린지 2주차 학습 일기 (0) | 2023.08.22 |
구름톤 챌린지 1주차 학습 일기 v2 (0) | 2023.08.20 |
구름톤 챌린지 1주차 학습 일기 (0) | 2023.08.16 |
댓글