728x90
반응형
https://www.acmicpc.net/problem/4716
4716번: 풍선
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 팀의 수 N(1 ≤ N ≤ 1,000)과 방 A와 B에 보관되어있는 풍선의 수 A, B가 주어진다. (0 ≤ A, B ≤ 10,000) 다음 N개
www.acmicpc.net
문제 해결
- 거리를 비교해서 A아니면 B를 선택하는 문제로 보면 된다.
- A와 B와 거리가 같으면 풍선 남는 쪽으로 가면 되는데 풍선이 모자랄 일이 없으므로 그냥 계산하면 된다.
CODE
while True:
n, a, b = map(int, input().split())
if n==0 and a==0 and b==0:break
X = [list(map(int, input().split())) for _ in range(n)]
X.sort(key=lambda x: abs(x[1]-x[2]), reverse = True)
answer = 0
E = []
for ballon, distanceA, distanceB in X:
if distanceA > distanceB:
if b>= ballon:
b-= ballon
answer += distanceB*ballon
else:
ballon -=b
answer += distanceB*b
answer += distanceA * ballon
b= 0
elif distanceA < distanceB:
if a>= ballon:
a -= ballon
answer += distanceA*ballon
else:
ballon -= a
answer += distanceA*a
answer += distanceB*ballon
a=0
else:
E.append([ballon, distanceA,distanceB])
for i in range(len(E)):
answer += E[i][0]*E[i][1]
print(answer)
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 17281 야구 (0) | 2023.04.30 |
---|---|
[python] 백준 18185 라면 사기 (small) (0) | 2023.04.29 |
[python] 백준 6593 상범 빌딩 (0) | 2023.04.26 |
[python] 백준 17471 게리맨더링 (0) | 2023.04.26 |
[python] 백준 1477 휴게소 세우기 (0) | 2023.04.25 |
댓글