본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Bronze 1][Python] 15720번 : 카우버거

by 빛밤하늘 2021. 4. 26.
반응형

밑의 링크는 백준에서의 문제 링크입니다.

 

15720번: 카우버거

첫째 줄에는 주문한 버거의 개수 B, 사이드 메뉴의 개수 C, 음료의 개수 D가 공백을 사이에 두고 순서대로 주어진다. (1 ≤ B, C, D ≤ 1,000) 둘째 줄에는 각 버거의 가격이 공백을 사이에 두고 주어진

www.acmicpc.net

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# 첫째 줄에는 주문한 버거의 개수 B,
# 사이드 메뉴의 개수 C, 음료의 개수 D를
# 공백을 사이에 두고 순서대로 입력합니다.
# 1 <= B, C, D <= 1,000
B, C, D = map(int, input().split(' '))

# 둘째 줄에는 각 버거의 가격을 공백을 사이에 두고 입력합니다.
# 정수형으로 바꾸고 리스트 변수에 넣어줍니다.
burgers = list(map(int, input().split(' ')))

# 셋째 줄에는 각 사이드 메뉴의 가격을 공백을 사이에 두고 입력합니다.
# 정수형으로 바꾸고 리스트 변수에 넣어줍니다.
sides = list(map(int, input().split(' ')))

# 넷째 줄에는 각 음료의 가격을 공백을 사이에 두고 입력합니다.
# 정수형으로 바꾸고 리스트 변수에 넣어줍니다.
drinks = list(map(int, input().split(' ')))

# 입력한 버거, 사이드 메뉴, 음료 중 가장 적은 개수를 저장하는 변수를 선언합니다.
min_num = min(B, C, D)

# 세트 할인이 적용되기 전 가격을 저장하는 변수를 선언합니다.
# 모든 버거, 사이드 메뉴, 음료의 가격을 더한 값입니다.
before_set_dicount = sum(burgers) + sum(sides) + sum(drinks)
# 세트 할인이 적용된 후 가격을 저장하는 변수를 선언합니다.
# 0으로 초기화해줍니다.
after_set_discount = 0

# 버거, 사이드 메뉴, 음료 중 가장 적은 개수만큼 반복해봅니다.
for i in range(min_num):
    # 버거 중 가장 비싼 가격을 저장하는 변수를 선언합니다.
    max_price_burger = max(burgers)
    # 사이드 메뉴 중 가장 비싼 가격을 저장하는 변수를 선언합니다.
    max_price_side = max(sides)
    # 음료 중 가장 비싼 가격을 저장하는 변수를 선언합니다.
    max_price_drink = max(drinks)

    # 위의 세 변수를 더하고 10%를 할인한 가격을 저장하는 변수를 선언합니다.
    set_price = int((max_price_burger + max_price_side + max_price_drink) * 0.9)
    # 이번에 할인된 세트 메뉴의 가격을 after_set_discount에 저장합니다.
    after_set_discount += set_price

    # 가장 비싼 버거, 사이드 메뉴, 음료는 할인이 되었으니 각 리스트 변수에서 제거해줍니다.
    burgers.remove(max_price_burger)
    sides.remove(max_price_side)
    drinks.remove(max_price_drink)

# 할인이 되지 않은 남은 버거, 사이드 메뉴, 음료들의 가격을 after_set_discount에 저장해줍니다.
after_set_discount += sum(burgers) + sum(sides) + sum(drinks)

# 세트 할인이 적용되기 전 가격을 출력합니다.
print(before_set_dicount)
# 세트 할인이 적용된 후 가격을 출력합니다.
print(after_set_discount)

결과

 

문제를 풀고 나서 카테고리를 보니 정렬을 염두에 두고 푸는 문제였던 것 같습니다.

다음에 정렬을 해서 푸는 방법도 올려보겠습니다.

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글