이렇게 하면 방향 인덱스가 상-0, 하-3, 좌-1, 우-2가 됩니다. 반대 방향 인덱스끼리 더하면 3이 됨을 알 수 있습니다. 이를 이용하여 다음과 같이 isDistanced(room, x, y) 메서드의 switch 문을 완성합니다.
switch (room[ny][nx]) {
case 'P': return false;
case 'O':
if (isNextToVolunteer(room, nx, ny, 3-d)) return false;
break;
}
특정 위치의 응시자가 거리두기를 지키는지 검사할 수 있게 되었으니 대기실 전체가 거리두기를 지키는지 검사하는 isDistanced(room) 메서드도 다음과 같이 완성할 수 있습니다.
private boolean isDistanced(char[][] room) {
for (int y = 0; y < room.length; y++) {
for (int x = 0; x < room[y].length; x++) {
if (room[y][x] != 'P') continue;
if (!isDistanced(room, x, y)) return false;
}
}
return true;
}