알고리즘 문제풀이/Beakjoon

백준 2547. 사탕 선생 고창영 (JAVA)

joah.k 2023. 2. 1. 16:58
728x90

 

https://www.acmicpc.net/problem/2547

 

2547번: 사탕 선생 고창영

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 빈 줄로 구분되어 있고, 다음과 같이 구성되어 있다. 테스트 케이스의 첫째 줄에 학생의 수 N이 주어진다. 다음 N개의 줄에는

www.acmicpc.net

 

사탕 선생 고창영 

 
시간 제한메모리 제한제출정답맞힌 사람정답 비율
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