Problem B 풀이 (C++)
모든 사탕의 개수를 사람 수로 나눴을 때
1. 나누어떨어지지 않는다면 나눌 수 없는 케이스. -1 출력.
2. 나누어떨어진다면 나눌 수 있는 케이스.
[ 나눌 수 있는 경우 답 구하기 ]
나눈 몫이 각 친구들이 가져야 할 사탕의 개수이고 이 값을 c라고 하자.
배열을 순회하여 c보다 많은 사탕을 가지고 있는 사람의 수가 k가 된다.
( 이 문제에서 왜 minimum의 조건이 있는지 이해가 되지 않는다. 혹시 이조건이 필요한 경우를 아신다면 댓글 부탁드립니다. )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include <iostream> #include <vector> using namespace std; int main() { int t; cin >> t; while (t--) { int n; cin >> n; vector<int> candies(n, 0); int answer = 0; int total = 0; for (int i = 0; i < n; i++) { cin >> candies[i]; total += candies[i]; } if (total % n != 0) { cout << -1 << endl; continue; } int need = total / n; for (int i = 0; i < n; i++) if (need < candies[i]) answer++; cout << answer << endl; } return 0; } | cs |
댓글
댓글 쓰기