728x90
https://www.acmicpc.net/problem/2547
사탕 선생 고창영
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 | 128 MB | 4159 | 1476 | 1306 | 40.234% |
문제
사탕 박사 고창영은 사탕 공장을 그만 두고 초등학교 선생님으로 취직했다.
오늘은 창영이네 반 학생들과 소풍을 가는 날이다. N명의 학생은 모두 가방에 사탕을 가득 담아왔다.
그런데, 사탕을 많이 가져온 학생들이 사탕을 적게 가져온 학생들을 놀리기 시작했다.
창영이는 "얘들아~ 그러면 안되지ㅜㅜ 사탕을 모두 여기에 가져와보렴. 선생님이 공평하게 나눠줄게"
창영이는 모든 학생들이 같은 사탕을 가지게 하려고 한다.
이것이 가능한 일일까?
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 빈 줄로 구분되어 있고, 다음과 같이 구성되어 있다.
테스트 케이스의 첫째 줄에 학생의 수 N이 주어진다. 다음 N개의 줄에는 각 학생들이 가져온 사탕의 수가 주어진다.
N은 100,000보다 작거나 같은 자연수이고, 사탕의 개수는 0보다 크거나 같은 정수이다. 학생들이 가져온 사탕 개수는 10^18보다 작거나 같다. (학생들이 가져온 사탕 개수의 합은 10^18을 넘어갈 수 있다)
출력
각 테스트 케이스에 대해 모두에게 같은 사탕을 나눠줄 수 있으면 YES를, 없으면 NO를 출력한다.
예제 입력 1 복사
2
5
5
2
7
3
8
6
7
11
2
7
3
4
예제 출력 1 복사
YES
NO
풀이 : 처음에 무심코 int로 데이터형을 모두 처리했더니 런타임 에러가 났다.
자료형을 BigInteger로 했어야 함 (자주하는 실수. 조심하자)
모두에게 사탕이 동일하게 배분되는지에 대해선 사탕 총 합 / 아이들 수의 나머지가 0인 경우로 생각하면 된다.
package beakjoon.bronze3;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
public class Beakjoon2547 {
// 백준 2547. 사탕 선생 고창영
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine()); // case
for(int i=0; i<T; i++){
br.readLine(); // 공백 글자를 받는다.
int n = Integer.parseInt(br.readLine()); // 사탕을 가져온 아이들 수
BigInteger sum = new BigInteger("0"); // sum 을 0으로 초기화. BigInteger를 사용하기 때문에 0을 String으로 받는다
for(int j=0; j<n; j++){
sum = sum.add(BigInteger.valueOf(Long.parseLong(br.readLine())));
}
System.out.println((String.valueOf(sum.remainder(BigInteger.valueOf(n))).equals("0"))? "YES":"NO");
}
}
}
728x90
'알고리즘 문제풀이 > Beakjoon' 카테고리의 다른 글
백준 1247. 부호 (JAVA) (0) | 2023.02.06 |
---|---|
[백준] 별 찍기 모음 (JAVA) (0) | 2023.02.01 |
백준 2991. 사나운 개 (JAVA) (0) | 2023.01.31 |
[코테/알고리즘] 백준 단계별 학습 방법 (+초보자 추천) (0) | 2022.10.25 |
[자바 알고리즘] String - 단어 뒤집기 : 주어진 N개의 단어를 뒤집어 출력하기 (0) | 2022.01.24 |