const int dy[] = {-1, 0, 1, 0};
const int dx[] = {0, 1, 0, -1};
for(int i=0; i<4; i++)
{
ny = y + dy[i];
nx = x + dx[i];
}
문제
Q. {0,0} 좌표에서 dy, dx를 만들어 4방향(위, 오른쪽 ,아래, 왼쪽)을 탐색하며 좌표를 출력
int x = 0, y = 0;
const int dy[] = {-1, 0, 1, 0};
const int dx[] = {0, 1, 0, -1};
for(int i=0; i<4; i++)
{
int nx = x + dx[i];
int ny = y + dy[i];
cout << ny << "," << nx << '\n';
}
Q. {0,0} 좌표에서 dy, dx를 만들어 8방향(위, 오른쪽 ,아래, 왼쪽, 대각선)을 탐색하며 좌표를 출력
int x = 0, y = 0;
const int dy[] = {-1, -1, 0, 1, 1, 1, 0, -1};
const int dx[] = {0, 1, 1, 1, 0, -1, -1, -1};
for(int i=0; i<8; i++)
{
int nx = x + dx[i];
int ny = y + dy[i];
cout << ny << "," << nx << '\n';
}
Q. 3*3 맵을 입력받아야 함. 1과 0으로 이루어져 있고 {0,0} = 1, {0,0} 좌표에서 4방향을 기준으로 한 칸씩 탐색해나가며 방문한 정점은 방문하지 않으며 방문하는 좌표를 출력하는 코드 (0은 갈 수 없는 지역, 1은 갈 수 있는 지역을 구현)
const int dy[] = {-1, 0, 1, 0};
const int dx[] = {0, 1, 0, -1};
const int size = 3;
int map[size][size];
bool visited[size][size];
void Visit(int y, int x)
{
cout << x << "," << y << '\n';
visited[y][x] = true;
for(int i=0; i<4; i++)
{
int nx = x + dx[i];
int ny = y + dy[i];
if (nx < 0 || ny < 0 || nx >= size || ny >= size)
continue;
if (!map[ny][nx])
continue;
if (visited[ny][nx])
continue;
Visit(ny, nx);
}
}
int main()
{
for(int i=0; i<size; i++)
{
for(int j=0; j<size; j++)
{
cin >> map[i][j];
}
}
Visit(0, 0);
}
소중한 정보 잘 봤습니다!