
문해력이 딸려서 처음 문제를 봤을 때 이해가 안갔다.
좀 생각을 해보니 그제야 이해가 되었다.
이렇게 이해를 하고 풀었다.
6번에서 왜 저 둘의 최소값이 실제 판매 개수가 되냐면,
예를 들어, 농부가 달걀을 최대 5개 팔 수 있는데 구매 가능한 사람이 3명뿐이라면, 실제 판매 개수는 3개가 되고,
반대로 구매자가 10명이고 농부가 달걀 5개를 갖고 있다면, 실제 판매 개수는 5개이므로 최소값으로 결정된다.
n, m = input().split()
n = int(n); m = int(m)
max = 0 # 최대 수익
best_price = 0 # 최적 가격
p = [int(input()) for _ in range(m)]
p.sort()
for i in range(m):
buyers_cnt = m - i # i 번째 이후의 구매자는 모두 p[i] 이상 낼 수 있음
sell_cnt = min(n, buyers_cnt) # 실제 판매 개수는 n과 구매 가능한 구매자 수 중 최소값임
profit = p[i] * sell_cnt # 수익 = 판매가격 * 구매 가능한 구매자 수
# 최대 수익 갱신
if profit > max:
max = profit
best_price = p[i]
print(best_price, max)
주석으로 설명은 했고, p = [int(input()) for _ in range(m)] 이 부분은 코드트리에서 파이썬 문법으로 배운 Comprehension 문법을 사용했다. 처음에 그냥 for문 안에 작성해서 했는데 내가 뭘 잘못 작성했는지 틀렸다고 나와서 Comprehension을 적용시켜 봤다. 파이썬 진짜 짱이네...