https://www.acmicpc.net/problem/1049
1049번: 기타줄
첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주
www.acmicpc.net
문제 해결 과정
착안
기타줄의 패키지 가격과 낱개 가격을 각각 별도의 배열에 저장한 다음 오름차순으로 정렬하고, 패키지로 구매하는 경우와 낱개를 구매하는 경우를 비교하여 문제를 해결한다.
구현
필요한 기타줄의 수를 $N$이라 할 때, 다음과 같이 두 가지 조건을 비교하여 문제를 해결할 수 있다.
- 패키지로 구매하는 경우와 낱개로 6 개씩 구매하는 경우를 비교한다.
- 패키지로 구매하는 경우와 $N$을 6으로 나눈 나머지만큼 기타줄을 낱개로 구매하는 경우를 비교한다.
[스포 주의] 아래 '더보기'를 누르면 코드가 나오니 주의하세요~
더보기
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> Package;
vector<int> Each;
int main()
{
int N, M, cost;
cin >> N >> M;
while (M--)
{
int a, b;
cin >> a >> b;
Package.push_back(a);
Each.push_back(b);
}
sort(Package.begin(), Package.end());
sort(Each.begin(), Each.end());
if (Package[0] < Each[0] * 6)
cost = Package[0] * (N / 6);
else
cost = Each[0] * (N - N % 6);
if (Package[0] < Each[0] * (N % 6))
cost += Package[0];
else
cost += Each[0] * (N % 6);
cout << cost << "\n";
return 0;
}
실행 결과
'C++ 코딩 문제 풀이 > 백준' 카테고리의 다른 글
[Baekjoon] 1436번: 영화감독 숌 (1) | 2023.12.22 |
---|---|
[Baekjoon] 1890번: 점프 (0) | 2023.12.21 |
[Baekjoon] 1019번: 책 페이지 (1) | 2023.12.20 |
[Baekjoon] 2629번: 양팔저울 (0) | 2023.12.15 |
[Baekjoon] 11967번: 불켜기 (0) | 2023.12.14 |
댓글