본문 바로가기

old/Algorithm Solving

LeetCode 1603. Design Parking System 자바 문제 풀이

반응형

문제

Design Parking System - LeetCode

문제 해결 방법

  • 자바 오브젝트 생성을 할수 있느냐고 묻는 문제 입니다.
  • 1번 답은 기본적인 오브젝트 생성이며, 협업하고, 나중에 업데이트 하기 좋은 코드 입니다.
  • 2번 답은 이 문제에 있어서 매우 효율적이지만, 나중에 업데이트하기 어려운 코드 입니다.

Github Link

https://github.com/eunhanlee/LeetCode_1603_DesignParkingSystem_Solution.git

1번 답

class ParkingSystem {
    private int bigSlots;      // 대형 차량용 사용 가능한 슬롯 수
    private int mediumSlots;   // 중형 차량용 사용 가능한 슬롯 수
    private int smallSlots;    // 소형 차량용 사용 가능한 슬롯 수

    /**
     * 각 차량 유형별로 지정된 수의 슬롯을 가지는 새로운 ParkingSystem을 생성합니다.
     *
     * @param big    대형 차량용 사용 가능한 슬롯 수
     * @param medium 중형 차량용 사용 가능한 슬롯 수
     * @param small  소형 차량용 사용 가능한 슬롯 수
     */
    public ParkingSystem(int big, int medium, int small) {
        this.bigSlots = big;
        this.mediumSlots = medium;
        this.smallSlots = small;
    }

    /**
     * 주어진 유형의 차량을 주차 시스템에 추가합니다.
     *
     * @param carType 주차할 차량의 유형 (1은 대형 차량, 2는 중형 차량, 3은 소형 차량)
     * @return 차량이 성공적으로 주차되었을 경우 true, 그렇지 않으면 false
     */
    public boolean addCar(int carType) {
        switch (carType) {
            case 1: // 대형 차량
                if (this.bigSlots > 0) {     // 대형 차량용 슬롯이 사용 가능한지 확인
                    this.bigSlots--;        // 대형 차량용 슬롯 수 감소
                    return true;            // 차량 주차 성공
                }
                break;
            case 2: // 중형 차량
                if (this.mediumSlots > 0) {  // 중형 차량용 슬롯이 사용 가능한지 확인
                    this.mediumSlots--;     // 중형 차량용 슬롯 수 감소
                    return true;            // 차량 주차 성공
                }
                break;
            case 3: // 소형 차량
                if (this.smallSlots > 0) {   // 소형 차량용 슬롯이 사용 가능한지 확인
                    this.smallSlots--;      // 소형 차량용 슬롯 수 감소
                    return true;            // 차량 주차 성공
                }
                break;
            // 주어진 조건에 따라 carType은 1, 2, 3 중 하나이므로
            // default case는 필요하지 않습니다. switch 문이 모든 가능한 경우를 처리합니다.

            // default:
            //     throw new IllegalArgumentException("유효하지 않은 차량 유형: " + carType);
        }
        return false;   // 주어진 차량 유형에 대한 사용 가능한 주차 슬롯이 없음
    }
}

2번 답

class ParkingSystem {
    int[] slots; // 각 차량 유형의 사용 가능한 슬롯 수를 저장하는 배열입니다.

    /**
     * 주어진 크기의 주차 시스템을 생성합니다.
     *
     * @param big    대형 차량용 슬롯 수
     * @param medium 중형 차량용 슬롯 수
     * @param small  소형 차량용 슬롯 수
     */
    public ParkingSystem(int big, int medium, int small) {
        slots = new int[]{big, medium, small};
    }

    /**
     * 주어진 유형의 차량을 주차 시스템에 추가합니다.
     *
     * @param carType 주차할 차량의 유형 (1은 대형 차량, 2는 중형 차량, 3은 소형 차량)
     * @return 차량이 성공적으로 주차되었을 경우 true, 그렇지 않으면 false
     */
    public boolean addCar(int carType) {
        return --slots[carType - 1] >= 0;
    }
}

참고

자바 오브젝트 생성시, this 키워드를 사용하는 이유

반응형