ปัญหา
มีคน 2 ประเภท: ชอบมังสวิรัติ (0) และไม่มังสวิรัติ (1) มีกล่องอาหารจำกัด คนจะไม่รับกล่องที่ไม่ตรงชอบ จะแทรกคิวท้าย จนกว่าจะได้กล่องที่ชอบ หาจำนวนคนที่ไม่ได้กล่องอาหาร
ตัวอย่าง
people=[0,1,1,0], packets=[0,1,0,0] → ผลลัพธ์ 1 (มีคนชอบไม่มังสวิรัติ 2 คน แต่กล่องไม่มังสวิรัติแค่ 1 กล่อง → คนหนึ่งรอตลอด)
ขั้นตอนการแก้ปัญหา
temp_arr := [0,0]นับจำนวนคนแต่ละประเภท- นับ
peopleใส่temp_arr k := 0- بينما
k < len(packets):- ถ้า
temp_arr[packets[k]] > 0:temp_arr[packets[k]] -= 1 - มิฉะนั้น: break
k += 1
- ถ้า
- คืน
len(packets) - k
การนำไปใช้งาน (Python)
def solve(people, packets):
temp_arr = [0, 0]
for person in people:
temp_arr[person] += 1
k = 0
while k < len(packets):
if temp_arr[packets[k]] > 0:
temp_arr[packets[k]] -= 1
else:
break
k += 1
return len(packets) - k
print(solve([0,1,1,0], [0, 1, 0, 0]))
อินพุต
[0,1,1,0], [0, 1, 0, 0]
เอาต์พุต
1