※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 24938번 문제인 키트 분배하기이다.
문제는 아래 링크를 확인하자.

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

 

24938번: 키트 분배하기

서울과학고 기숙사에는 $N$개의 방이 일렬로 나열되어 있습니다. 교사들은 교내 방역을 위해 기숙사의 각 방에 진단 키트를 제공했습니다. 그러나 분배 과정에서 실수가 있었고, 방마다 받은 키

www.acmicpc.net

먼저 총 키트 개수를 구해 각 방마다 제공되어야 하는 키트의 개수 x를 구할 수 있다.

 

모든 방에 정확히 x개씩 키트가 있게 해야하므로, 첫 방서부터 보면서 그 방에 x개의 키트가 있게끔 다음 방에 보내야하는 (또는 다음 방으로부터 받아야하는) 키트의 개수를 계산해내면 문제를 해결할 수 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;
typedef long long ll;

ll total = 0;
ll ans = 0;
ll arr[200000];

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int N; cin >> N;
	for (int i = 0; i < N; i++) {
		ll& x = arr[i];
		cin >> x;
		total += x;
	}

	total /= N;
	N--;

	for (int i = 0; i < N; i++) {
		ll& x = arr[i], & y = arr[i + 1];
		ll temp = total - x;
		ans += abs(temp);
		y -= temp;
	}

	cout << ans;
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 24940 // C++] Split the GSHS  (0) 2022.04.08
[BOJ 24939 // C++] Boardle  (0) 2022.04.07
[BOJ 24937 // C++] SciComLove (2022)  (0) 2022.04.05
[BOJ 24936 // C++] Trip Odometer  (0) 2022.04.04
[BOJ 24835 // C++] 1-Trees and Queries  (0) 2022.04.03

+ Recent posts