Queen's Attack II Discussions | Algorithms | HackerRank
  • + 0 comments

    def queensAttack(n, k, r_q, c_q, obstacles): sum_attack_queen = 0 obstacles_set = set(tuple(obstacle) for obstacle in obstacles)

    def count_attacks(dx, dy):
        count = 0
        x, y = r_q + dx, c_q + dy
        while 1 <= x <= n and 1 <= y <= n:
            if (x, y) in obstacles_set:
                break
            count += 1
            x += dx
            y += dy
        return count
    
    # Directions (dx, dy)
    directions = [
        (1, 0),   # up
        (-1, 0),  # down
        (0, 1),   # right
        (0, -1),  # left
        (1, 1),   # up-right
        (1, -1),  # up-left
        (-1, 1),  # down-right
        (-1, -1)  # down-left
    ]
    
    for dx, dy in directions:
        sum_attack_queen += count_attacks(dx, dy)
    
    return sum_attack_queen