본문 바로가기
알고리즘/SWEA

[SWEA] 5603. 건초더미

by hyerann 2019. 5. 6.

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXGEbd6cjMDFAUo&categoryId=AWXGEbd6cjMDFAUo&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

www.swexpertacademy.com

우선 건초더미들의 크기 합을 건초더미의 개수로 나눠 같게 만든 건초더미의 크기가 얼마인지 구한다.

그리고 입력받은 건초더미들의 크기에서 같게 만든 건초더미의 크기를 뺀 절대값의 합을 저장하고 마지막에 나누기 2를 하면 답이다.

왜냐하면 같게 만든 건초더미의 크기보다 큰 경우에는 건초더미의 개수를 빼야 하고 같게 만든 건초더미의 크기보다 작은 경우에는 건초더미의 개수를 더해야 하는데, 건초더미를 빼서 다른 건초더미에 더하는 두 작업이 하나의 이동 과정이 되므로 나누기 2를 해주는 것이다.

#include <iostream>
#include <ios>
using namespace std;

int N, hays[10000], totalHays;
int getResult();

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

	int T; cin >> T;

	for (int tc = 1; tc <= T; tc++) {
		totalHays = 0;
		cin >> N;
		for (int i = 0; i < N; i++) {
			cin >> hays[i];
			totalHays += hays[i];
		}
		cout << '#' << tc << ' ' << getResult() << "\n";
	}

	return 0;
}

int getResult() {
	int cnt = 0;
	int sameHays = totalHays / N;
	for (int i = 0; i < N; i++) cnt += abs(sameHays - hays[i]);
	return cnt / 2;
}

댓글