이렇게 하면 방향 인덱스가 상-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;
    }
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.