티스토리 뷰
1. 문제 내용
2. 접근 방식
- 최대 수익은 최대한 가격이 높을수록 발생할 가능성이 높다.
따라서 우선 Pi를 내림차순 정렬한다. 이후 P0 가격 * 1개의 판매 가격과 P1 가격 * 2개의 판매 가격을 비교한다. 이것을 N > M일 경우에는 M번, N <= M일 경우엔 N번 반복하면서 최대 수익을 찾으면 된다.
- Pi는 최대 100만 번 입력될 수 있으므로, input( ) 대신 속도가 빠른 sys.stdin.readline( )을 사용하자.
3. 정답 코드
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
ps = [int(input()) for _ in range(m)]
ps.sort(reverse=True)
price = -1
profit = -1
loop = m if n > m else n
for i in range(loop):
temp = ps[i] * (i + 1)
if profit <= temp:
profit = temp
price = ps[i]
print(price, profit)
728x90
'코딩 테스트 > 백준' 카테고리의 다른 글
[백준] 1213번 팰린드롬 만들기 파이썬 정답 코드 (3) | 2023.06.09 |
---|---|
[백준] 17521번 Byte Coin 파이썬 정답 코드 (0) | 2023.06.07 |
[백준] 10610번 30 파이썬 정답 코드 (0) | 2023.06.05 |
[백준] 19939번 박 터뜨리기 파이썬 정답 코드 (0) | 2023.06.05 |
[백준] 1758번 알바생 강호 파이썬 정답 코드 (0) | 2023.06.05 |