티스토리 뷰
문제링크 : https://www.acmicpc.net/problem/16208
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
ll N, sum = 0;
cin >> N;
vector<ll>v(N);
for(int i=0; i<N; i++)
{
cin >> v[i];
sum += v[i];
}
ll result = 0;
for(int i=0; i<N; i++)
{
result += v[i] * (sum-v[i]);
sum-=v[i];
}
cout << result;
return 0;
}
최소의 비용으로 쇠막대를 자른 다고 하였지만, 사실 어떻게 자르든 총 비용은 같다.
따라서 정렬할 필요없이 v[i] 값과 v[i]를 제외한 나머지 값을 곱한 값을 누적해가며 총 비용을 구해주면 된다.
'백준 > 실버' 카테고리의 다른 글
[백준 17269번] 이름궁합 테스트 (C++) (0) | 2025.07.09 |
---|---|
[백준 5671번] 호텔 방 번호 (C++) (0) | 2025.07.08 |
[백준 1418번] K-세준수 (0) | 2025.07.07 |
[백준 15719번] 중복된 숫자 (C++) (0) | 2025.07.05 |
[백준 2725번] 보이는 점의 개수 (C++) (0) | 2025.07.04 |