1/19
Loading...
📱최근 앱 목록!
📱 스마트폰의 최근 앱 화면을 떠올려보세요. • 앱을 열면 → 목록 맨 앞으로 • 메모리가 부족하면 → 가장 오래된 앱 종료 • 앱 이름으로 → 즉시 찾아 전환 최근 N개만 유지하는 이 규칙이 바로 LRU!
Loading...
📱 스마트폰의 최근 앱 화면을 떠올려보세요. • 앱을 열면 → 목록 맨 앞으로 • 메모리가 부족하면 → 가장 오래된 앱 종료 • 앱 이름으로 → 즉시 찾아 전환 최근 N개만 유지하는 이 규칙이 바로 LRU!
당신은 스마트폰의 백그라운드 앱 관리자를 만들고 있습니다. 메모리가 작아서 최근 사용한 앱을 최대 N개까지만 살려둘 수 있습니다. 사용자는 두 가지 동작을 합니다. - launch(app, screen): 앱을 실행(또는 다시 열기)합니다. 그 앱이 보고 있던 화면 번호 screen을 기억해 둡니다. 이미 살아있는 앱이면 화면 번호를 갱신하고 '가장 최근 사용'으로 올립니다. 새 앱인데 이미 N개가 떠 있으면, 가장 오래 안 쓴 앱을 종료(메모리 해제)하고 새 앱을 띄웁니다. - switchTo(app): 그 앱으로 전환합니다. 살아있으면 기억해 둔 화면 번호를 그대로 보여주고(그 앱이 '가장 최근 사용'이 됩니다), 이미 종료된 앱이면 -1을 돌려줍니다(처음 화면부터 다시 켜야 함). 동작 순서가 주어질 때, switchTo의 결과를 차례대로 구하고 마지막 메모리 상태를 출력하세요.
N = 3
launch("MAP", 1)
launch("CAM", 2)
launch("MSG", 3)
switchTo("MAP")
launch("WEB", 4)
switchTo("PAY")
switchTo("MSG")
launch("CAM", 5)switchTo("MAP") → 1
switchTo("PAY") → -1
switchTo("MSG") → 3
메모리: CAM, MSG, WEB (최근→오래된)MAP을 전환하면 MAP이 최근 사용으로 올라갑니다. WEB 실행 시 메모리가 꽉 차서 가장 오래된 CAM이 종료됩니다. PAY는 떠 있지 않아 -1. 마지막 CAM 실행 때 다시 꽉 차서 가장 오래된 MAP이 종료되고, 최종 메모리는 최근 순으로 CAM, MSG, WEB입니다.