나의 작은 valley

[cosPro 1급] Book 클래스 본문

Computer Science/[알고리즘]

[cosPro 1급] Book 클래스

붕옥 아이젠 2023. 8. 12. 20:58
728x90
  • Book :
    • Book은 책의 인터페이스입니다.
    • 책은 get_rental_price 함수를 구현해야 합니다.
    • get_rental_price 함수는 대여 기간을 매개변수로 받아 대여 요금을 계산합니다.
  • ComicBook :
    • ComicBook은 만화책을 나타내는 클래스이며, Book 인터페이스를 구현합니다.
    • get_rental_price 함수는 대여 기간을 매개변수로 받아 만화책의 대여 요금을 계산합니다.
  • Novel :
    • Novel은 소설책을 나타내는 클래스이며, Book 인터페이스를 구현합니다.
    • get_rental_price 함수는 대여 기간을 매개변수로 받아 소설책의 대여 요금을 계산합니다.
  • 대여를 원하는 책들의 종류가 들어있는 리스트 book_types와 대여 기간 day가 매개변수로 주어질 때, 전체 대여 요금을 return 하도록 solution 함수를 작성하려고 합니다. 위의 클래스 구조를 참고하여 주어진 코드의 빈칸을 적절히 채워 전체 코드를 완성해주세요.
 

  • 매개변수 설명 대여를 원하는 책들의 종류가 들어있는 리스트 book_types와 대여 기간 day가 solution 함수의 매개변수로 주어집니다.
  •   - book_types의 길이는 1 이상 50 이하입니다.
      - book_types에는 만화책을 뜻하는 문자열 "comic"과 소설책을 뜻하는 문자열 "novel"이 들어있습니다.
      - 예를 들어 ["comic", "comic", "novel"]이 매개변수로 주어진다면, 이는 만화책 두 권과 소설책 한 권을 나타냅니다.
      - day는 1 이상 100 이하의 자연수입니다.
  • return 값 설명
    • 전체 대여 요금을 return 해주세요.

 

 

 

코드

from abc import *
 
    
class Book(metaclass=ABCMeta):
    @abstractmethod
    def get_rental_price(self, day):
        pass
    
    
class ComicBook(Book):
    def get_rental_price(self, day):
        cost = 500 
        day -= 2
        if day > 0:
            cost += 200 * day
        return cost
    
    
class Novel(Book):
    def get_rental_price(self, day):
        cost = 1000
        day -= 3
        if day > 0:
            cost += 300 * day
        return cost
    
    
def solution(book_types, day):
    books = []
    for types in book_types:
        if types == "comic":
            books.append(ComicBook())
        elif types == "novel":
            books.append(Novel())
    total_price = 0

    for book in books:
        total_price += book.get_rental_price(day)
    return total_price

book_types = ["comic", "comic", "novel"]
day = 2
print(solution(book_types, day))

너무 별거 없어서 할 말은 없는데.. 그 사실 이 코드가 엄밀히 말하면 틀린 코드입니다. day <=2 or 3일 경우에는 이제 오류가 발생하는 코드이기 떄문이죠. 해당 경우를 대비하려면 이제 if문으로 대응할 수가 있죠. 근데 그건 그냥 하면 되기 떄문에 스킵하겠습니다.

728x90

'Computer Science > [알고리즘]' 카테고리의 다른 글

[cosPro 1급] 경품 당첨  (0) 2023.08.12
[cosPro 1급] 지하철 타기  (0) 2023.08.12
[cosPro 1급] 주식 매매  (0) 2023.08.12
[cosPro 1급] 계단 게임  (0) 2023.08.12
[cosPro 1급] 투표  (1) 2023.08.12
Comments