본문 바로가기

알고리즘

[백준] 25943번 양팔저울 C++ 문제풀이

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

 

25943번: 양팔저울

입력은 표준입력을 사용한다. 첫 번째 줄에 자갈 개수를 나타내는 양의 정수 $n$ ($2 ≤ n ≤ 10\,000$)이 주어진다. 다음 줄에 $n$ 개의 수들이 주어지는데, 이들은 번호 순서대로 자갈의 무게이다. 자

www.acmicpc.net

문제 풀이

규칙에 맞게 왼쪽 저울과 오른쪽 저울에 자갈을 놓은 다음, 차이 값만큼을 100g 부터 무게 추를 추가했다.

최종적으로 추가적으로 필요한 무게추의 최소 개수를 출력한다.

소스 코드

#include <iostream>
using namespace std;

int chu[8] = { 100,50, 20, 10, 5, 2, 1 };
int input[10001] = { 0 };

int main() {
	int n;
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> input[i];
	}
	int left_wgt = input[0];
	int right_wgt = input[1];
	for (int j = 2; j < n; j++) {
		if (left_wgt <= right_wgt)
			left_wgt += input[j];
		else if (left_wgt > right_wgt)
			right_wgt += input[j];
	}
	int result = 0;
	int diff = abs(left_wgt - right_wgt);
	for (int i = 0; i < 7; i++) {
		if (diff / chu[i] > 0) {
			result += diff / chu[i];
			diff = diff % chu[i];
		}
	}
	cout << result << '\n';
}