forked from codepath/compsci_guides
-
Notifications
You must be signed in to change notification settings - Fork 0
Blueprint Approval Process
Jessica Sang edited this page Sep 14, 2024
·
1 revision
TIP102 Unit 3 Session 2 Advanced (Click for link to problem statements)
Understand what the interviewer is asking for by using test cases and questions about the problem.
- Q: What is the input to the problem?
- A: The input consists of a list of integers
blueprints
, where each integer represents the complexity level of a blueprint.
- A: The input consists of a list of integers
- Q: What is the output?
- A: The output is a list of integers representing the order in which the blueprints are approved, sorted by increasing complexity.
- Q: How should the blueprints be processed?
- A: Blueprints should be approved in order of increasing complexity, meaning that simpler (lower complexity) blueprints are approved before more complex ones.
Plan the solution with appropriate visualizations and pseudocode.
General Idea: Sort the list of blueprints by complexity and then process each blueprint in that order using a queue to simulate the approval process.
1. Sort the list `blueprints` in ascending order based on their complexity levels.
2. Initialize a queue (using `deque`) and append each sorted blueprint to the queue.
3. Initialize an empty list `approved` to keep track of the order of approved blueprints.
4. While the queue is not empty:
1. Remove the first blueprint from the queue and add it to the `approved` list.
5. Return the `approved` list, which contains the blueprints in the order they were approved.
- Forgetting to sort the blueprints by complexity before processing them.
- Misunderstanding the use of a queue to manage the approval process.
from collections import deque
def blueprint_approval(blueprints):
queue = deque()
for blueprint in sorted(blueprints):
queue.append(blueprint)
approved = []
while queue:
approved.append(queue.popleft())
return approved
# Example usage
print(blueprint_approval([3, 5, 2, 1, 4])) # Output: [1, 2, 3, 4, 5]
print(blueprint_approval([7, 4, 6, 2, 5])) # Output: [2, 4, 5, 6, 7]