※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 18130번 문제인 여름나기이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/18130
각 손 선풍기를 이용할 때 지불하게 될 총액을 계산하는 식을 하나 만들고, 반복문을 이용해 가장 비용이 적게 드는 손 선풍기를 찾아 그 번호와 그 때의 비용을 출력하는 것으로 문제를 해결하자.
추가비용을 낼 시점의 수를 나눗셈의 몫을 이용하여 먼저 계산한다면 총 추가비용을 구하는 식을 어렵지 않게 유도할 수 있을 것이다.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
typedef long long ll;
int N, Q;
ll id;
ll ans = 9223372036854775807LL;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> Q;
for (int n = 1; n <= N; n++) {
ll P, K, C; cin >> P >> K >> C;
ll cnt = (Q - 1) / K;
ll val = P + cnt * (cnt + 1) / 2 * C;
if (val < ans) id = n, ans = val;
}
cout << id << ' ' << ans;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 6600 // C++] 원의 둘레 (0) | 2023.01.10 |
---|---|
[BOJ 25558 // C++] 내비게이션 (0) | 2023.01.10 |
[BOJ 27110 // C++] 특식 배부 (0) | 2023.01.10 |
[BOJ 26949 // C++] Kylskåpstransport (0) | 2023.01.10 |
[BOJ 18126 // C++] 너구리 구구 (0) | 2023.01.09 |