주차 시스템을 설계한다고 가정합니다. 주차장에는 대, 중, 소의 3가지 종류의 주차 공간이 있습니다. 그리고 각 크기에 대해 고정된 수의 슬롯이 있습니다. 두 가지 방법으로 OurParkingSystem이라는 클래스를 만드십시오 -
-
생성자(대형, 중형, 소형) − 이 생성자는 다른 공간에 사용할 수 있는 슬롯 수를 가져오고 OurParkingSystem 클래스의 개체를 초기화합니다.
-
addCar(carType) − 주차장에 싣고자 하는 차량에 대해 주어진 carType의 주차공간이 있는지 확인하는 방법입니다.
대, 중, 소 3개의 슬롯은 각각 1, 2, 3으로 표시됩니다. 제약 조건은 carType이 일치하는 경우에만 자동차가 주차 공간에 주차할 수 있다는 것입니다. 사용 가능한 공간이 없으면 false를 반환하고, 그렇지 않으면 해당 크기의 공간에 차를 주차하고 true를 반환합니다.
큰 차를 위한 공간이 2개 있고 중형차를 위한 공간이 없고 작은 차를 위한 공간이 1개 있는 경우 생성자 호출은 OurParkingSystem(2, 0, 1)과 같을 것이고 addCar를 다음과 같이 호출하면 -
addCar(3) - 작은 차 한 대를 추가하고 true를 반환합니다.
addCar(2) − 중형차를 추가할 공간이 없으므로 false를 반환합니다.
addCar(3) − 새 소형차를 추가할 공간이 없으므로 false를 반환합니다.
AddCar(1) - 하나의 큰 차를 추가하고 true를 반환합니다.
AddCar(1) - 다른 큰 차를 추가하고 true를 반환합니다.
AddCar(1) − 다른 큰 차를 위한 공간이 없으므로 false를 반환합니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
함수 생성자()를 정의합니다. 큰, 중간, 작은 작업이 필요합니다.
-
sp :=[0,big,medium,small]과 같은 목록
-
addCar() 함수를 정의합니다. carType이 걸립니다.
-
sp[carType]> 0이면
-
sp[carType] :=sp[carType] - 1
-
참을 반환
-
-
거짓을 반환
예제(파이썬)
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
class OurParkingSystem: def __init__(self, big, medium, small): self.sp = [0,big,medium,small] def addCar(self, carType): if(self.sp[carType] >0 ): self.sp[carType] -= 1 return True return False ps = OurParkingSystem(2, 0, 1) print(ps.addCar(3)) print(ps.addCar(2)) print(ps.addCar(3)) print(ps.addCar(1)) print(ps.addCar(1)) print(ps.addCar(1))
입력
ps.addCar(3) ps.addCar(2) ps.addCar(3) ps.addCar(1) ps.addCar(1) ps.addCar(1)
출력
True False False True True False