สมมติว่ามีตัวเลข n แทนนักเขียนโปรแกรมที่จะเข้าร่วมงานประชุม และมีรายการตัวเลข convention โดย 1 แทนนักเขียนโปรแกรม 0 แทนที่ว่าง เงื่อนไขคือไม่มีนักเขียนโปรแกรมสองคนนั่งติดกัน เราต้องตรวจสอบว่านักเขียนโปรแกรมทั้ง n คนสามารถเข้าได้หรือไม่
เช่น ถ้าอินพุตคือ n = 2, convention = [0, 0, 1, 0, 0, 0, 1] ผลลัพธ์จะเป็น True
ขั้นตอนการแก้ปัญหา
- for i ในช่วง 0 ถึงขนาดของ conv ทำ
- a := 0 ถ้า i-1 < 0 มิฉะนั้น i-1
- b := ขนาดของ conv -1 ถ้า i+1 >= ขนาดของ conv มิฉะนั้น i+1
- ถ้า conv[i] == 0 และ conv[a] == 0 และ conv[b] == 0 แล้ว conv[i] := 1, n := n - 1
- คืนค่า true ถ้า n <= 0 มิฉะนั้น false
ตัวอย่างโค้ด
class Solution:
def solve(self, n, conv):
for i in range(len(conv)):
a = 0 if i-1 < 0 else i-1
b = len(conv)-1 if i+1 >= len(conv) else i+1
if conv[i] == 0 and conv[a] == 0 and conv[b] == 0:
conv[i] = 1
n -= 1
return n <= 0
ob = Solution()
n = 2
convention = [0, 0, 1, 0, 0, 0, 1]
print(ob.solve(n, convention))
อินพุต
2, [0, 0, 1, 0, 0, 0, 1]
เอาต์พุต
True