Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหา Minimum Jump กลับจากโฟลเดอร์ไป Home ใน Python

สมมติมี Logs บันทึก Path เข้าโฟลเดอร์ มี Symbol ต่างๆ:

  • "../" : ย้อนกลับไป Parent Folder (ถ้าอยู่ Main Folder แล้ว ไม่เปลี่ยนตำแหน่ง)

  • "./" : อยู่ใน Current Folder

  • "x/" : เข้า Child Folder ชื่อ x

จาก Logs หา Minimum Operations เพื่อกลับจาก Last Folder ที่หยุด ไป Main Folder

Input: logs = ["Dir1/","Dir2/","../","Dir2/","Dir3/","./"] → Output: 3

โปรแกรมหา Minimum Jump กลับจากโฟลเดอร์ไป Home ใน Python

จากรูป ต้อง Step Back 3 ครั้งถึง Home

ขั้นตอนการแก้ปัญหา

  • stk := List ใหม่

  • Loop แต่ละ Item i ใน logs:

    • ถ้า i == "../" และ len(stk) > 0: ลบ Element สุดท้ายของ stk (pop)

    • Else if i != "./" และ i != "../": เพิ่ม i เข้า stk (append)

    • Else: Continue (ข้าม)

  • Return จำนวน Items ใน stk

ตัวอย่าง Python

def solve(logs): 
    stk = [] 
    for i in logs: 
        if i == "../" and len(stk) > 0: 
            stk.pop() 
        elif i != "./" and i != "../": 
            stk.append(i) 
        else: 
            continue 
    return len(stk) 

logs = ["Dir1/","Dir2/","../","Dir2/","Dir3/","./"] 
print(solve(logs))

Input

["Dir1/","Dir2/","../","Dir2/","Dir3/","./"]

Output

3