사탕 선생 고창영
사탕 박사 고창영은 사탕 공장을 그만 두고 초등학교 선생님으로 취직했다.
오늘은 창영이네 반 학생들과 소풍을 가는 날이다. N명의 학생은 모두 가방에 사탕을 가득 담아왔다.
그런데, 사탕을 많이 가져온 학생들이 사탕을 적게 가져온 학생들을 놀리기 시작했다.
창영이는 "얘들아~ 그러면 안되지ㅜㅜ 사탕을 모두 여기에 가져와보렴. 선생님이 공평하게 나눠줄게"
창영이는 모든 학생들이 같은 사탕을 가지게 하려고 한다.
이것이 가능한 일일까?
예제 입출력
입력 | 출력 |
2 // 2번의 테스트 코드 5 // 1번 테스트 코드에서 5개의 입력 받음 5 2 7 3 8 6 // 2번 테스트 코드에서 6개의 입력 받음 7 11 2 7 3 4 |
11110 |
코드
1. 테스트 케이스 수 t 입력 받기
2. t 만큼 for문 반복
3. 테스트 케이스의 사람 수 입력받기
int n : 테스트 케이스의 사람 수
BigInteger sum : 사탕 개수를 더할 변수 | 조건 학생들이 가져온 사탕 개수의 합은 10^18을 넘어갈 수 있다로 int형을 넘는다.
4. 사탕 수 더하기
BigInteger 메소드 add를 사용하여 입력받은 사탕 수를 sum 변수에 더한다.
5. 사탕 수가 사람 수의 배수인지 판별하기
String reminder = String.valueOf(sum.remainder(BigInteger.valueOf(n)));
→ sum이 int형이었을 경우 String reminder = Integer.toString(sum % n); 와 같다.
BigInteger 메소드인 나머지를 구하는 remainder를 사용하여 나머지값을 구했다.
1. 사탕 수를 균등하게 분배할 수 있는지에 따라 출력
나머지가 0이 아닐 경우 사탕 수를 균등하게 분배하지 못한다.
따라서 reminder가 0이면 "YES"를 0이 아니면 "NO"를 출력한다.
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int t = scanner.nextInt();
for (int i = 0; i < t; i++) {
int n = scanner.nextInt();
BigInteger sum = new BigInteger("0");
for (int j = 0; j < n; j++) {
sum = sum.add(scanner.nextBigInteger());
}
String reminder = String.valueOf(sum.remainder(BigInteger.valueOf(n)));
if (reminder.equals("0")) System.out.println("YES");
else System.out.println("NO");
}
}
'코딩 테스트 > [JAVA] 백준' 카테고리의 다른 글
[JAVA] 백준 2783번 삼각 김밥 | BOJ 자바 bronze 3 (0) | 2022.03.18 |
---|---|
[JAVA] 백준 2754번 학점계산 | BOJ 백준 bronze 3 (0) | 2022.03.18 |
[JAVA] 별 찍기 | 백준 BOJ 2438 2439 2440 2441 2442 2443 2444 2445 2446 2522 2523 자바 (0) | 2022.03.16 |
[JAVA] 백준 1598번 꼬리를 무는 숫자 나열 | BOJ 자바 bronze 3 (0) | 2022.03.15 |
[JAVA] 백준 1373번 2진수 8진수 (0) | 2022.03.15 |
댓글