SKYLIGHT STUDIO

[C++][2547] 사탕 선생 고창영 본문

Computer Programming/Coding Test(C++)

[C++][2547] 사탕 선생 고창영

SKY_L 2024. 10. 2. 22:22
문제
사탕 박사 고창영은 사탕 공장을 그만 두고 초등학교 선생님으로 취직했다.
오늘은 창영이네 반 학생들과 소풍을 가는 날이다. N명의 학생은 모두 가방에 사탕을 가득 담아왔다.
그런데, 사탕을 많이 가져온 학생들이 사탕을 적게 가져온 학생들을 놀리기 시작했다.
창영이는 "얘들아~ 그러면 안되지ㅜㅜ 사탕을 모두 여기에 가져와보렴. 선생님이 공평하게 나눠줄게"
창영이는 모든 학생들이 같은 사탕을 가지게 하려고 한다.
이것이 가능한 일일까?
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 빈 줄로 구분되어 있고, 다음과 같이 구성되어 있다.
테스트 케이스의 첫째 줄에 학생의 수 N이 주어진다. 다음 N개의 줄에는 각 학생들이 가져온 사탕의 수가 주어진다.
N은 100,000보다 작거나 같은 자연수이고, 사탕의 개수는 0보다 크거나 같은 정수이다. 학생들이 가져온 사탕 개수는 1018보다 작거나 같다. (학생들이 가져온 사탕 개수의 합은 1018을 넘어갈 수 있다)
출력
각 테스트 케이스에 대해 모두에게 같은 사탕을 나눠줄 수 있으면 YES를, 없으면 NO를 출력한다.

 

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;

int test_case_num;
long long student_num;
long long several_candy;
long long several_candy_spe;
long long candy_num;

int main()
{
	cin >> test_case_num;
	
	for (int i = 0; i < test_case_num; i++) {
		cin >> student_num;
		for (int j = 0; j < student_num; j++) {
			cin >> several_candy;
			several_candy_spe = several_candy % student_num;
			candy_num += several_candy_spe;
		}
		cout << ((candy_num % student_num == 0) ? "YES" : "NO") << endl;

		student_num = 0;
		several_candy = 0;
		several_candy_spe = 0;
		candy_num = 0;
	}

}

 

다른 건 제쳐두고서도, 마구잡이로 캔디를 합치게 되면 long long의 한계를 넘어버린다.

이 떄문에 candy_num은 나머지만을 합치는 것.

 

several_candy_spe = several_candy % student_num

 

이 과정은 미리 학생들에게 사탕을 배부했다고 생각하면 된다.

 

사실 대문자 소문자를 실수해서 틀렸다.

 

 

 

'Computer Programming > Coding Test(C++)' 카테고리의 다른 글

[C++][1773] 폭죽쇼  (1) 2024.10.08
[C++/1076] 저항  (0) 2024.10.08
[C++ 리바이브] C++ 동적 배열  (0) 2024.10.02
[C++][1267] 핸드폰 요금  (0) 2024.10.01
[C++][1264] 모음의 개수  (0) 2024.09.29