백준 1049번 : 기타줄
링크 : https://www.acmicpc.net/problem/1049
찝찝하다. 왜 이렇게는 되는데 저렇게는 안되는거지의 전형적인 답답함. 한번 살펴보자.
#include <iostream>
using namespace std;
int main() {
int N, M;
cin >> N >> M;
int package, onlyone, total = 0;
int min_pack = 1000, min_only = 1000;
for (int i = 0; i < M; i++) {
cin >> package >> onlyone;
if (min_pack > package)
min_pack = package;
if (min_only > onlyone)
min_only = onlyone;
}
int q = (N / 6), r = (N % 6);
total = min( min((q * min_pack) + (r * min_only), N*min_only),
(q + 1) * min_pack);
cout << total << endl;
return 0;
}
비교해야 할 대상이 총 3개다.
- 6개가 담긴 package의 가격이 (1개당 가격 X 6) 보다 클 경우 :
min((q * min_pack) + (r * min_only), N*min_only)
- (1개당 가격 X n) 보다 package의 가격 이 더 작을 경우 (이는 세번째 예시에서 확인할 수 있다.):
min(total, (q + 1) * min_pack)
슬픈 이야기다. 1번째 요소를 확인하지 못해 여러번 실패했다. 그리고 이렇게 정리하고 코드를 짜야겠다. 코드 다 쓰고 글쓰니까 놓친 부분이 너무 많이 보인다.
Author And Source
이 문제에 관하여(백준 1049번 : 기타줄), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ntbij29/백준-1049번-기타줄저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)