โจทย์
มีสตริงเวลา hh:mm บางตัวเป็น ? (Hidden) ต้องแทนที่ ? ให้ได้เวลาที่ถูกต้อง ล่าสุด (Latest) ตามนาฬิกา 24 ชม. (00:00 - 23:59)
ตัวอย่าง: s = "1?:?5" → Output: "13:55"
อัลกอริธึม
- กำหนด Max Time Template:
['2','3',':','5','9'] - ปรับ Template: ถ้าชั่วโมง < 2 → นาทีสองหลักแรกเป็น 9; ถ้านาที 4-9 → ชั่วโมงหลักแรกเป็น 1
- วน Zip กับ Input: ถ้าเป็นตัวเลขเก็บไว้ ถ้าเป็น ? ใช้ค่าจาก Template
โค้ด Python
def solve(s):
ans = []
max_time = ['2','3',':','5','9']
if max_time[0] < '2':
max_time[1] = '9'
if '9' >= max_time[1] > '3':
max_time[0] = '1'
for mx, digit in zip(max_time, s):
if digit.isdigit():
ans.append(digit)
else:
ans.append(mx)
return ''.join(ans)
s = "1?:?5"
print(solve(s)) # Output: 13:55
Input / Output
Input: "1?:?5"
Output: 13:55