문제 설명
구현문제입니다.
친구들이 식사 후 식사비를 나누는 상황입니다. 하나의 친구는 특정 요리를 먹지 않았습니다.
요리를 나누고 계산했을 때, 그 친구는 본인이 먹지 않은 요리에 대해 청구된 부분에 대해 불만을 갖습니다.
친구들이 각자 내야 할 금액을 계산하고, 불만을 가진 친구가 정당하게 내야 할 금액과 비교하여 그 차이를 계산합니다.
https://www.hackerrank.com/challenges/bon-appetit/problem?isFullScreen=true
Bill Division | HackerRank
Determine whether or not Brian overcharged Anna for their split bill.
www.hackerrank.com
문제 접근 방법
- 입력:
- 첫 번째 줄: 친구의 수 nn과 특정 친구가 먹지 않은 요리의 인덱스 k.
- 두 번째 줄: 각 요리의 가격을 포함한 리스트 bill.
- 세 번째 줄: 친구가 실제로 지불한 금액 b.
- 계산:
- 특정 친구가 먹지 않은 요리를 제외한 총 요리 가격을 계산합니다.
- 이를 친구 수 - 1로 나누어 친구당 내야 할 금액을 계산합니다.
- 불만을 가진 친구가 실제로 지불한 금액과 비교합니다.
- 출력:
- 불만을 가진 친구가 더 많이 지불했으면 그 차이를 출력하고, 그렇지 않으면 "Bon Appetit"를 출력합니다.
예제
예를 들어, 다음과 같은 입력이 주어졌다고 가정합니다:
4 1
3 10 2 9
12
코드
def bonAppetit(bill, k, b):
# 요리 가격 합산에서 특정 친구가 먹지 않은 요리의 가격을 제외
actual_share = (sum(bill) - bill[k]) // 2
# actual_share = [v for i, v in enumerate(bill) if i != k] # 리스트컴프리션으로
# 친구가 지불한 금액과 실제로 지불해야 할 금액 비교
if b == actual_share:
print("Bon Appetit")
else:
print(b - actual_share)
# 입력 값 예시
bill = [3, 10, 2, 9]
k = 1
b = 12
bonAppetit(bill, k, b)
'Programming > CodingTest' 카테고리의 다른 글
[이코테] [5] 다이나믹 프로그래밍 ( 동적계획법 ) (0) | 2024.08.10 |
---|---|
[이코테] [4] 정렬-Sort (0) | 2024.08.10 |
[이코테] [3] DFS 와 BFS (0) | 2024.08.07 |
[이코테] [2] 그리디(Greedy) 와 구현 (Implementation) (0) | 2024.07.28 |
[이코테] [1] 코딩테스트를 위한 많이 활용하는 파이썬 문법 (0) | 2024.07.28 |