※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 1246번 문제인 온라인 판매이다.

문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/1246 

 

1246번: 온라인 판매

첫째 줄에 정수 N(1 ≤ N ≤ 1,000)과 M(1 ≤ M ≤ 1,000)이 입력된다. 둘째 줄부터 M+1번째 줄까지 i+1번째 줄에는 Pi(1 ≤ Pi ≤ 1,000,000)가 입력된다.

www.acmicpc.net

계란을 가장 비싸게 살 의향이 있는 i명에게 그중 가장 싸게 살 의향이 있는 사람의 가격으로 계란을 팔았을 때 얻는 이득들 중 가장 비싼 값을 구하는 것으로 충분하다. i명에게 더 저렴한 가격으로 계란을 팔면 손해뿐이기 때문이다.

 

이는 각 사람들이 사고자 하는 값인 Pi를 먼저 정렬해두는 것으로 빠르게 계산할 수 있다.

 

문제 조건에서, 최대 이익을 얻을 수 있는 계란의 가격 중 "최소"비용을 구하라고 한 점에 유의하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <algorithm>
using namespace std;

int arr[1000];

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int N, M; cin >> N >> M;
	for (int i = 0; i < M; i++) cin >> arr[i];

	sort(arr, arr + M);

	int ans = 0, idx = 0, k = min(N, M);
	for (int i = 1; i <= k; i++) {
		if (ans <= i * arr[M - i]) ans = i * arr[M - i], idx = i;
	}

	cout << arr[M - idx] << '\n' << ans;
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 16938 // C++] 캠프 준비  (0) 2022.02.05
[BOJ 18310 // C++] 안테나  (0) 2022.02.04
[BOJ 1940 // C++] 주몽  (0) 2022.02.02
[BOJ 2012 // C++] 등수 매기기  (0) 2022.02.01
[BOJ 14852 // C++] 타일 채우기 3  (0) 2022.01.31

+ Recent posts