ปัญหา
ให้อาร์เรย์ nums และค่า k เริ่มต้นที่ index 0:
- ถ้าค่าที่ index นั้นเป็น จำนวนเฉพาะ → ใส่ค่า k กลับเป็นค่าเริ่มต้น
- ถ้าไม่ใช่จำนวนเฉพาะ →
k -= 1 - ถ้า k ≤ 0 และยังไม่ถึงปลาย และค่าถัดไปไม่ใช่เฉพาะ →
False
ตัวอย่าง
nums = [8, 5, 6, 7, 8], k = 2
8(ไม่เฉพาะ)→k=1, 5(เฉพาะ)→k=2, 6(ไม่เฉพาะ)→k=1, 7(เฉพาะ)→k=2, 8(ไม่เฉพาะ)→k=1 ถึงปลาย → True
โค้ดตัวอย่าง
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num**0.5)+1):
if num % i == 0:
return False
return True
def solve(arr, k):
initial_k = k
for i, val in enumerate(arr):
if is_prime(val):
k = initial_k
else:
k -= 1
if k <= 0 and i < len(arr)-1 and not is_prime(arr[i+1]):
return False
return True
print(solve([8, 5, 6, 7, 8], 2)) # True
อินพุต / เอาต์พุต
Input: [8, 5, 6, 7, 8], 2 Output: True