## Similar Problems

Similar Problems not available

# Maximum Good People Based On Statements - Leetcode Solution

## Companies:

LeetCode: Maximum Good People Based On Statements Leetcode Solution

Difficulty: Hard

Topics: backtracking bit-manipulation array

The problem Maximum Good People Based On Statements on Leetcode can be solved using logical deductions. The problem statement is as follows:

There are n people numbered from 0 to n-1 and n statements numbered from 0 to n-1. Each person knows exactly n statements. The ith statement is true if and only if statement[i][j] is true, where 0 <= j < n.

You're given a boolean array called is_known. is_known[i] is true if and only if the ith person knows the statement 0.

Return the maximum number of good people you can invite, where a good person is a person who knows every statement.

Let's break down the problem into smaller sub-problems:

- Identify the people who know statement 0
- For each person identified in step 1, identify the statements they know based on their knowledge of statement 0
- Identify the people who know all the statements identified in step 2
- Return the count of people identified in step 3

Let's implement the steps in code:

```
def maximum_good_people(is_known, statements):
# Step 1
statement_0_knowers = set()
for person, knowledge in enumerate(statements):
if knowledge[0]:
statement_0_knowers.add(person)
# Step 2
known_statements = [set() for _ in range(len(statements))]
for person in statement_0_knowers:
for statement, knowledge in enumerate(statements[person]):
if knowledge:
known_statements[statement].add(person)
# Step 3
good_people = set()
for person in statement_0_knowers:
if all(person in known_statements[statement] for statement in range(len(statements))):
good_people.add(person)
# Step 4
return len(good_people)
```

Let's test the function:

```
>>> is_known = [True, False, True, True, False]
>>> statements = [[True, False, False, True, True],
... [False, True, True, True, True],
... [True, False, True, False, False],
... [True, False, False, True, True],
... [True, True, False, True, True]]
>>> maximum_good_people(is_known, statements)
1
```

In the example above, only person 0 knows statement 0. Based on their knowledge, we can identify that statements 0 and 3 are true. Person 0 also knows statements 2 and 4, but statement 2 is false. Hence, person 0 is the only good person and the function returns 1.

## Maximum Good People Based On Statements Solution Code

`1`