[Bronze III] 사탕 선생 고창영 - 2547
2547번: 사탕 선생 고창영
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 빈 줄로 구분되어 있고, 다음과 같이 구성되어 있다. 테스트 케이스의 첫째 줄에 학생의 수 N이 주어진다. 다음 N개의 줄에는
www.acmicpc.net
성능 요약
메모리: 41388 KB, 시간: 552 ms
분류
수학, 사칙연산, 임의 정밀도 / 큰 수 연산
문제 설명
사탕 박사 고창영은 사탕 공장을 그만 두고 초등학교 선생님으로 취직했다.
오늘은 창영이네 반 학생들과 소풍을 가는 날이다. N명의 학생은 모두 가방에 사탕을 가득 담아왔다.
그런데, 사탕을 많이 가져온 학생들이 사탕을 적게 가져온 학생들을 놀리기 시작했다.
창영이는 "얘들아~ 그러면 안되지ㅜㅜ 사탕을 모두 여기에 가져와보렴. 선생님이 공평하게 나눠줄게"
창영이는 모든 학생들이 같은 사탕을 가지게 하려고 한다.
이것이 가능한 일일까?
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 빈 줄로 구분되어 있고, 다음과 같이 구성되어 있다.
테스트 케이스의 첫째 줄에 학생의 수 N이 주어진다. 다음 N개의 줄에는 각 학생들이 가져온 사탕의 수가 주어진다.
N은 100,000보다 작거나 같은 자연수이고, 사탕의 개수는 0보다 크거나 같은 정수이다. 학생들이 가져온 사탕 개수는 1018보다 작거나 같다. (학생들이 가져온 사탕 개수의 합은 1018을 넘어갈 수 있다)
출력
각 테스트 케이스에 대해 모두에게 같은 사탕을 나눠줄 수 있으면 YES를, 없으면 NO를 출력한다.
답 : BigInteger을 통해 계산한다.
사탕을 학생 수로 나눈 나머지가 0인 경우 YES, 아닌 경우 NO 출력
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt(); // 테스트 케이스 수
for (int i = 0; i < t; i++) {
int n = sc.nextInt(); // 학생 수
BigInteger sum = new BigInteger("0"); // BigInteger 객체 생성 및 초기화
for (int j = 0; j < n; j++) {
// BigInteger 객체 sum에 입력받은 사탕의 수를 더해줌.
sum = sum.add(BigInteger.valueOf(sc.nextLong()));
}
// sum을 n으로 나눈 나머지가 0이면 YES를 출력
if (sum.mod(BigInteger.valueOf(n)).equals(BigInteger.ZERO)) {
System.out.println("YES");
} else { // sum을 n으로 나눈 나머지가 0이 아니면 NO를 출력
System.out.println("NO");
}
}
sc.close();
}
}
'algorithm > 백준' 카테고리의 다른 글
[백준] 공백 없는 A+B - 15873 Java[자바] (0) | 2023.03.23 |
---|---|
[백준] 등장하지 않는 문자의 합 - 3059 Java[자바] (0) | 2023.03.22 |
[백준] 파일 옮기기 - 11943 Java[자바] (0) | 2023.03.19 |
[백준] 1998년생인 내가 태국에서는 2541년생?! - 18108 Java[자바] (0) | 2023.03.18 |
[백준] 한글 - 11282 Java[자바] (0) | 2023.03.17 |