일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 알고리즘 문제
- javascript
- CSS
- HTML
- Git
- es6
- API
- c++
- AWS
- js
- PYTHON
- 알고리즘 풀이
- 파이썬
- react
- MAC
- django rest framework
- django ORM
- 파이썬 알고리즘
- 알고리즘 연습
- 장고
- java
- Baekjoon
- web
- form
- django widget
- Algorithm
- 알고리즘
- DRF
- Django
- 백준
Archives
- Today
- Total
수학과의 좌충우돌 프로그래밍
[C++] BAEKJOON 8901번 화학제품(ACM-ICPC Daejeon 2011) 본문
입력으로 주어지는 모든 숫자는 1000이하이기 떄문에 다음과 같이 어렵지 않게 접근하였습니다.
- ab 혼합물의 수를
0
부터a,b의 갯수의 최소값
까지 만들어준다. - bc 혼합물의 수를
0
부터남은 b의 갯수, c의 최소값
까지 만들어준다. - 남은 a 와 c 를 이용해서 ac 혼합물을 만든다.
O(n^2)
의 복잡도로 핵심 알고리즘을 작성하였습니다.
for (int abNum=0;abNum<=min(a,b);abNum++){
for (int bcNum=0;bcNum<=min(b-abNum,c);bcNum++){
int caNum = min(a-abNum,c-bcNum);
maxPrice = max(maxPrice, abNum *abP + bcNum*bcP + caNum *caP);
}
}
이에 대해서 O(n)
으로 해결할 수 있었습니다.
-
ab 혼합물의 수를
0
부터a,b의 갯수의 최소값
까지 만들어준다. -
ab 혼합물 수를 정한 순간 문제를 새롭게 정의할 수 있습니다.
남아있는 A,B,C 를 이용해서 BC 혼합물과, CA 혼합물로 최대의 이익은 얼마인가
이 경우, BC 혼합물이 비싼 경우, 이를 최대로 만들고 CA 혼합물이 비싼 경우 이를 최대로 만들어주면 됩니다. 따라서 다음과 같이 두 경우의 최대값을 구해줌으로서 해결 했습니다.
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
int T;
cin >> T;
for (int t=0;t<T;t++){
int a,b,c;
int abP,bcP,caP;
cin >> a >> b >> c;
cin >> abP >> bcP >> caP;
int maxPrice = 0;
for (int abNum=0;abNum<=min(a,b);abNum++){
int bcNum = min(b-abNum,c);
int caNum = min(c-bcNum,a-abNum);
maxPrice = max(maxPrice, abNum *abP + bcNum*bcP + caNum *caP);
caNum = min(c,a-abNum);
bcNum = min(b-abNum,c-caNum);
maxPrice = max(maxPrice, abNum *abP + bcNum*bcP + caNum *caP);
}
cout << maxPrice << endl;
}
return 0;
}
'알고리즘 > C++' 카테고리의 다른 글
[C++] BAEKJOON 1890번 점프 (0) | 2019.09.06 |
---|---|
[C++] BAEKJOON 5052번 전화번호목록 (0) | 2019.08.26 |
[C++] BAEKJOON 8895번 막대배치(ACM-ICPC Daejeon 2012) (2) | 2019.07.31 |
[C++] BAEKJOON 9455번 박스(ACM-ICPC Daejeon 2013) (0) | 2019.07.26 |
[C++] 이진 탐색 알고리즘 (1) | 2019.03.26 |
Comments