코드
#include <iostream>
#include <algorithm>
#include <climits>
using namespace std;
int n, a[1003], res = INT_MAX;
void FASTIO() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
}
int main() {
FASTIO();
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
sort(a, a + n);
// 가능한 모든 구간 탐색
for (int low = 0; low <= 83; low++) { // low + 17 ≤ 100이 되도록
int high = low + 17;
int cost = 0;
for (int i = 0; i < n; i++) {
if (a[i] < low) {
cost += (low - a[i]) * (low - a[i]);
} else if (a[i] > high) {
cost += (a[i] - high) * (a[i] - high);
}
}
res = min(res, cost);
}
cout << res << '\n';
return 0;
}
풀이
높이가 0에서 100사이이므로, 0과 83을 범위로 높이가 17이 되게 low과 high를 설정했다. low보다 높이가 낮으면 높이고, high보다 높으면 높이를 낮춘다. 각각 cost를 구한 다음 최소를 비교하여 값을 얻었다.
'백준' 카테고리의 다른 글
[백준] 12540번 Investing at the Market (Large) C++ 코드 (1) | 2024.12.19 |
---|---|
[백준] 4159번 알래스카 C++ 코드 (0) | 2024.12.18 |
[백준] 13414번 수강신청 C++ 코드 (0) | 2024.12.18 |
[백준] 26566번 Pizza C++ 코드 (0) | 2024.12.18 |
[백준] 29813번 최애의 팀원 C++ 코드 (0) | 2024.12.17 |
코드
#include <iostream>
#include <algorithm>
#include <climits>
using namespace std;
int n, a[1003], res = INT_MAX;
void FASTIO() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
}
int main() {
FASTIO();
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
sort(a, a + n);
// 가능한 모든 구간 탐색
for (int low = 0; low <= 83; low++) { // low + 17 ≤ 100이 되도록
int high = low + 17;
int cost = 0;
for (int i = 0; i < n; i++) {
if (a[i] < low) {
cost += (low - a[i]) * (low - a[i]);
} else if (a[i] > high) {
cost += (a[i] - high) * (a[i] - high);
}
}
res = min(res, cost);
}
cout << res << '\n';
return 0;
}
풀이
높이가 0에서 100사이이므로, 0과 83을 범위로 높이가 17이 되게 low과 high를 설정했다. low보다 높이가 낮으면 높이고, high보다 높으면 높이를 낮춘다. 각각 cost를 구한 다음 최소를 비교하여 값을 얻었다.
'백준' 카테고리의 다른 글
[백준] 12540번 Investing at the Market (Large) C++ 코드 (1) | 2024.12.19 |
---|---|
[백준] 4159번 알래스카 C++ 코드 (0) | 2024.12.18 |
[백준] 13414번 수강신청 C++ 코드 (0) | 2024.12.18 |
[백준] 26566번 Pizza C++ 코드 (0) | 2024.12.18 |
[백준] 29813번 최애의 팀원 C++ 코드 (0) | 2024.12.17 |