문제
풀이
코너 A를 몇 번 방문해도 되는지 수식으로 구한 후, A - B가 큰 값부터 해당 개수만큼 차례대로 선택하면 된다. A - B가 음수일 때는 B를 선택함에 유념한다. 필자는 A - B에 대한 배열을 추가적으로 구현하여, 해당 배열을 정렬 후 일정 금액 초과는 반드시 선택, 일정 금액은 남은 선택 개수만큼 선택하는 방식으로 구현하였다.
코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n, x;
cin >> n >> x;
int cnt = (x - 1000 * n) / 4000;
int arr[100000][2];
int diff[100000];
for (int i = 0; i < n; i++) {
cin >> arr[i][0] >> arr[i][1];
diff[i] = arr[i][0] - arr[i][1];
}
sort(diff, diff + n);
int difff;
if (cnt == 0) difff = 30000;
else difff = diff[n - cnt];
if (difff < 0) difff = 0;
int flavor = 0;
for (int i = 0; i < n; i++) {
if (arr[i][0] - arr[i][1] > difff && cnt > 0) {
cnt--;
flavor += arr[i][0];
}
else flavor += arr[i][1];
}
flavor += cnt * difff;
cout << flavor;
}
'Koala - 19기 > 코딩테스트 심화 스터디' 카테고리의 다른 글
[백준/python] 9095: 1,2,3더하기 (0) | 2025.08.02 |
---|---|
[python] 백준 11053 (0) | 2025.08.01 |
[백준/Python] #5585: 거스름돈 (0) | 2025.07.27 |
[백준/Python] #29155 개발자 지망생 구름이의 취업 뽀개기 (0) | 2025.07.27 |
[Python / 백준] 23559 : 밥 (0) | 2025.07.26 |