[백준 파이썬] 2109 순회강연
문제
n개의 대학에서 가아연 요청을 해왔다.
각 대학에서 d 일 안에 와서 강연을 해주면 p만큼의 강연료를 지불하겠다고 한다.
가장 많은 돈을 벌 수 있도록 순회강연을 하려 한다.
하루 최대 한 곳에서만 강연을 할 수 있다.
입력
첫째 줄에 정수 n이 주어진다. 다음 n개의 줄에는 각 대학에서 제 시한 p값과 d값이 주어진다.
출력
첫번째 줄에 최대로 벌 수 있는 돈을 출력한다.
풀이
날짜와 가치가 주어지는데 , 이때 같은 날짜에 서로 다른 가격이 주어질 수 있다 그렇기에 이걸 고려해야 한다.
나는 강연료를 저장할 배열을 하나 만들어서 그 배열의 길이가 주어진 날짜보다 작다면 배열에 추가하고 만약 주어진 날짜보다 크다면 배열을 역순으로 정렬하여 가장 마지막 값하고 현재 값하고 비교하여 현재값이 더 크다면 마지막 값을 빼고 현재 값을 추가하는 식으로 풀었다.
코드
n=int(input())
array=[]
for _ in range(n):
p,d=map(int,input().split())
array.append([d,p])
array.sort()
ans=[]
for d,p in array:
if len(ans)<d:
ans.append(p)
else:
ans.sort(reverse=True)
v=ans[-1]
if v<p:
ans.pop()
ans.append(p)
print(sum(ans))
결과
반응형
'파이썬 문제풀이 > 그리드' 카테고리의 다른 글
[백준 파이썬] 보물 1026 (0) | 2024.05.21 |
---|---|
[백준 파이썬] 19598 최소 회의실 개수 (0) | 2024.03.07 |
[백준 1700 파이썬] 멀티탭 스케줄링 (1) | 2024.02.16 |
[백준 1789 파이썬] 수들의 합 (1) | 2024.02.08 |
[백준 11508 파이썬] 2+1 세일 풀이 (2) | 2024.01.24 |