[Easy] 1603. Design Parking System

문제

Design a parking system for a parking lot. The parking lot has three kinds of parking spaces: big, medium, and small, with a fixed number of slots for each size.

Implement the ParkingSystem class:

  • ParkingSystem(int big, int medium, int small) Initializes object of the ParkingSystem class. The number of slots for each parking space are given as part of the constructor.
  • bool addCar(int carType) Checks whether there is a parking space of carType for the car that wants to get into the parking lot. carType can be of three kinds: big, medium, or small, which are represented by 1, 2, and 3 respectively. A car can only park in a parking space of its carType. If there is no space available, return false, else park the car in that size space and return true.

 

예시

Example 1:

Input
["ParkingSystem", "addCar", "addCar", "addCar", "addCar"]
[[1, 1, 0], [1], [2], [3], [1]]
Output
[null, true, true, false, false]

Explanation
ParkingSystem parkingSystem = new ParkingSystem(1, 1, 0);
parkingSystem.addCar(1); // return true because there is 1 available slot for a big car
parkingSystem.addCar(2); // return true because there is 1 available slot for a medium car
parkingSystem.addCar(3); // return false because there is no available slot for a small car
parkingSystem.addCar(1); // return false because there is no available slot for a big car. It is already occupied.

 

제약 조건

Constraints:

  • 0 <= big, medium, small <= 1000
  • carType is 1, 2, or 3
  • At most 1000 calls will be made to addCar

 

해결 과정

ParkingSystem을 this를 이용해 객체를 초기화 하였다.

addCar 메서드는 ParkingSystem 객체의 메서드이기 대문에 this.big, this.medium, this.small에 접근 가능하다.

1이면 big, 2이면 medium, 3이면 small이므로 조건문으로 나누어주었다.

만약 big이 0보다 크다면 자리가 남아있는 것이기 때문에 자리를 하나 없애고 true를 반환한다. 

0보다 크지 않다면 자리가 없는 것이기 때문에 false를 반환한다.

나머지 medium, small도 같은 로직으로 실행된다.

해결 코드

/**
 * @param {number} big
 * @param {number} medium
 * @param {number} small
 */
var ParkingSystem = function(big, medium, small) {
    this.big = big;
    this.medium = medium;
    this.small = small;
};

/** 
 * @param {number} carType
 * @return {boolean}
 */
ParkingSystem.prototype.addCar = function(carType) {
    if(carType === 1){
        // big
        if(this.big > 0){
            this.big--;
            return true;
        }else{
            return false;
        }
    }else if(carType === 2){
        // medium
        if(this.medium > 0){
            this.medium--;
            return true;
        }else{
            return false;
        }
    }else if(carType === 3){
        //small
        if(this.small > 0){
            this.small--;
            return true;
        }else{
            return false;
        }
    }
};

/** 
 * Your ParkingSystem object will be instantiated and called as such:
 * var obj = new ParkingSystem(big, medium, small)
 * var param_1 = obj.addCar(carType)
 */

'leetCode' 카테고리의 다른 글

[Easy] 28. Implement strStr()  (0) 2022.06.09
[Easy] 303. Range Sum Query - Immutable  (0) 2022.06.08
[Easy] 404. Sum of Left Leaves  (0) 2022.06.06
[Easy] 104. Maximum Depth of Binary Tree  (0) 2022.06.06
[Easy] 876. Middle of the Linked List  (0) 2022.06.06