#79. [백준_C언어] 11399 : ATM \ 정렬

 

입력 코드

#include <stdio.h>


main() {
	int N;
	scanf("%d", &N);

	int arr[1000];
	int i, j, key;
	for (i = 0; i < N; i++) {
		scanf("%d", &arr[i]);
	}

	for (i = 0; i < N - 1; i++) { 
		j = i; 
		while (j >= 0 && arr[j] > arr[j + 1]) { 
			key = arr[j]; 
			arr[j] = arr[j + 1]; 
			arr[j + 1] = key; 
			j--; 
		} 
	}

	int sum = 0, sum2 = 0;

	for (i = 0; i < N; i++) {
		sum += arr[i];
		sum2 += sum;
	}
	printf("%d\n", sum2);
}

 

 

코드 설명

#그리디 알고리즘 #정렬

 

앞사람이 걸리는 시간만큼 누적되어 계속 더해지는 것이므로 Pi를 작은 수부터 오름차순으로 정렬한 뒤에 소요시간을 계산해서 더하면 된다.

 

 

 

참고

m.blog.naver.com/occidere/220790825104

 

[백준] 11399 - ATM

문제 링크 : https://www.acmicpc.net/problem/11399이 문제는 대표적인 그리디 알고리즘 문제 중 하나이다...

blog.naver.com

bskwak.tistory.com/79

 

[C] 백준 11399번 ATM

1. 문제 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람

bskwak.tistory.com

 

 

문제 출처

www.acmicpc.net/problem/11399

 

11399번: ATM

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

www.acmicpc.net