Parking Lot System - Low Level Design Interview Question
- 다층 주차 시스템은 각 층별로 소형(20%), 중형(50%), 대형(30%) 주차 공간을 할당하며, 오토바이, 자동차, 버스 등 특정 차량 유형만 해당 크기 공간에 주차 가능합니다. 🅿️
Vehicle, ParkingSpot, ParkingLevel, ParkingLot 네 가지 핵심 클래스로 시스템이 구성되며, 각 클래스는 특정 기능을 담당합니다. 🏗️
ParkingSpot은 ID, 크기, 차량 정보를 관리하며, 주차 가능 여부 및 차량 적합성을 판단하는 메서드를 제공합니다. 💡
ParkingLevel은 주어진 총 공간 수에 따라 각 크기별 주차 공간을 초기화하고, 해당 레벨의 가용 공간을 찾거나 계산합니다. 🔢
ParkingLot은 occupied (차량 번호판 -> 공간 ID)와 spot_map (공간 ID -> ParkingSpot 객체) 두 개의 해시맵을 사용하여 차량 추적 및 O(1) 시간으로 주차 공간에 접근합니다. 🗺️
park_vehicle은 O(N)으로 가용 공간을 찾아 주차하고, remove_vehicle은 해시맵을 통해 O(1)로 차량을 출차하며, get_available_spots는 O(N)으로 가용 공간 수를 반환합니다. ⏱️
- 특히
remove_vehicle 메서드의 O(1) 시간 복잡도는 해시맵 사용을 통한 핵심 최적화 결과입니다. ✨
데브허브 | DEVHUB | Parking Lot System - Low Level Design Interview Question