더북(TheBook)

room[ny][nx]는 세 가지 중 하나의 값을 가지고 있습니다.

• X: 파티션일 경우, 이 위치를 이용하여 다른 응시자에게 도달할 수 없으므로 별도의 처리가 필요하지 않습니다.

• P: 응시자일 경우, 맨해튼 거리 1에 다른 응시자가 있는 것이므로 거리두기가 지켜지지 않은 것입니다.

• O: 빈 테이블일 경우, 인접한 곳에 다른 응시자가 있다면 거리두기가 지켜지지 않은 것입니다.

이는 다음과 같이 switch 문으로 구현할 수 있습니다.

switch (room[ny][nx]) {
    case 'P': return false;
    case 'O':
        // 인접한 곳에 다른 응시자가 있는지 검사
        break;
}

 

1-B. 빈 테이블과 인접한 위치 중 응시자가 있다면 거리두기를 지키지 않은 것

여기에서 인접한 곳이라 함은 다시 상하좌우를 의미합니다. 하지만 원래 검사를 시작했던 응시자는 제외해야 하기 때문에 해당 방향으로는 검사를 시행하지 않아야 합니다.

▲ 그림 3-19 맨해튼 거리 1 위치에서 검사 방향

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.