728x90
https://www.acmicpc.net/problem/11399
문제 풀이
배열에 값들을 입력받고 정렬한다.
현재 최적의 값은 대기시간이 가장 짧을 때 이므로 처리시간이 짧은 순서대로 오면 되기 때문에 정렬하는 것이다.
두 가지 풀이법이 있다.
1. 대기 시간을 따로 계산해서 총 걸린 시간에 더한다.
2. 덧셈이 반복되기 때문에 총 걸린 시간은 i번째 값 * n-i 번이다.
느낀 점
쉬운 문제였지만 제출 이후에 다르게 구성할 방법을 생각해보았다.
코드
#include <iostream>
#include <algorithm>
using namespace std;
int n, total = 0, waiting = 0;
int arr[1001];
int main() {
cin >> n;
for (int i = 0; i < n;i++) {
cin >> arr[i];
}
sort(begin(arr), begin(arr) + n);
for (int i = 0; i < n; i++) {
waiting += arr[i];
total += waiting;
}
cout << total;
}
'문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[C++] 백준 13305번 : 주유소 (0) | 2021.07.01 |
---|---|
[C++] 백준 1541번 : 잃어버린 괄호 (0) | 2021.07.01 |
[C++] 백준 1931번 : 회의실 배정 (0) | 2021.06.27 |
[C++] 백준 11047번 : 동전 0 (0) | 2021.06.26 |
[C++] 백준 12865번 : 평범한 배낭 (0) | 2021.06.25 |
댓글