ภาพรวม
โจทย์: ตัวเลขประกอบด้วยหลัก 1,2,3 เท่านั้น ได้พลิกหลักหนึ่งหลักเป็น 3 หาค่าสูงสุดที่เป็นไปได้
ตัวอย่าง
อินพุต: 11332
หลักแรกที่ไม่ใช่ 3 คือหลักแรก (1) → พลิกเป็น 3 → 31332
กลยุทธ์
พลิกหลักซ้ายสุดที่ไม่ใช่ 3 จะให้ค่าเพิ่มมากที่สุด (place value สูงสุด)
โค้ด Python
class Solution:
def solve(self, n):
li = list(str(n))
for x in range(len(li)):
if li[x] != '3':
li[x] = '3'
return int("".join(li))
return n
ob = Solution()
print(ob.solve(11332))
กรณีขอบ
- ทุกหลักเป็น 3 แล้ว (เช่น 333) → คืนค่าเดิม
- หลักเดียว (เช่น 1) → กลายเป็น 3
ผลลัพธ์
31332