※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 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 |