본문 바로가기
문제 풀이/백준(BOJ)

[C++] 백준 11399번 : ATM

by 희조당 2021. 6. 28.
728x90

https://www.acmicpc.net/problem/11399

 

11399번: ATM

첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)

www.acmicpc.net


문제 풀이

 배열에 값들을 입력받고 정렬한다.

현재 최적의 값은 대기시간이 가장 짧을 때 이므로 처리시간이 짧은 순서대로 오면 되기 때문에 정렬하는 것이다.

두 가지 풀이법이 있다.

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;
}

댓글