일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 피보나치
- 백준 7568번
- LG Aimers
- \n
- ubuntu keyboard delay
- endl과\n차이
- 백준 1003번
- 백준 2108번
- endl
- 백준 1037번
- 우분투 입력시간
- 백준 1004번
- 백준 1063번
- 백준 1049번
- 백준 1002번
- 백준 1026번
- 백준 1157번
- 백준 1015번
- 우분투 키보드 딜레이
- 백준 10773번
Archives
- Today
- Total
예비 개발자의 노트
백준 1049번) 기타줄 본문
본문의 코드보다 더 효율적인 코드가 분명 존재합니다.
참고만 해주시면 감사하겠습니다.
코드 지적은 언제나 환영입니다.
풀이
필요한 기타줄 개수와 브랜드의 수가 첫 번째줄에 입력된다.
이후에는 각각의 브랜드의 기타줄이 세트, 낱개 가격이 입력된다.
기타줄을 구매하는 최소금액을 구하는 문제이다.
기타줄을 구매하는 방법에는 3가지가 존재한다.
1. 세트로만 구매
2. 낱개로만 구매
3. 세트와 낱개를 혼합으로 구매
위의 3가지의 가격 중 최소값을 구하면 되는 문제이다.
우선 여러 브랜드에서 세트와 낱개의 최소 금액을 찾는다.
세트, 낱개의 최소 금액을 구한 후
기타줄을 구매하는 3가지 방법의 금액을 계산한다.
마지막으로 각각의 방법 중 가장 최소값을 찾는다.
코드
#include "iostream"
#include "vector"
#include "algorithm"
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, cnt;
cin >> n >> cnt;
vector<int> pcs_6; // 6개짜리
vector<int> pcs_1; // 1개짜리
for(int i = 0 ; i < cnt ; i++){
int tmp1, tmp2;
cin >> tmp1 >> tmp2;
pcs_6.push_back(tmp1);
pcs_1.push_back(tmp2);
}
int min_pcs_6 = *(min_element(pcs_6.begin(), pcs_6.end()));
int min_pcs_1 = *(min_element(pcs_1.begin(), pcs_1.end()));
int result1 = ((n/6)+1) * min_pcs_6; // pcs_6 으로만 구매하는 경우
int result2 = n * min_pcs_1; // pcs_1 로만 구매하는 경우
int result3 = ((n/6) * min_pcs_6) + (min_pcs_1 * (n%6)); // pcs_6 과 pcs_1 을 섞어서 구매하는 경우
cout << min(result1, min(result2, result3));
return 0;
}
'Baekjoon Online Judge' 카테고리의 다른 글
백준 10773번) 제로 (0) | 2023.01.16 |
---|---|
백준 1063번) 킹 (0) | 2023.01.16 |
백준 1026번) 보물 (0) | 2023.01.15 |
백준 1037번) 약수 (0) | 2023.01.13 |
백준 1015번) 수열 정렬 (0) | 2023.01.09 |