BOJ1049. 기타줄 작성일 2019-08-12 https://www.acmicpc.net/problem/1049 그리디라고 하기에도 좀 애매한 문제, 그냥 직관대로 풀면 된다. 증명도 너무 쉽다. 12345678910111213141516171819202122232425262728#include <bits/stdc++.h> using namespace std; int main() { int N, M, a, b; vector<pair<int,int>> price; cin >> N >> M; for(int i = 0; i < M; i++) { cin >> a >> b; price.push_back({a,b}); } int minp[7]; for(int i = 1; i <= 6; i++) { minp[i] = 0xfffff; for(int j = 0; j < M; j++) { minp[i] = min(minp[i], price[j].first); minp[i] = min(minp[i], price[j].second*i); } } int ans = 0; while(N > 0) { if (N >= 6) N -= 6, ans += minp[6]; else ans += minp[N], N = 0; } cout << ans; }