나의 작은 valley
[cosPro 1급] Book 클래스 본문
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