백준 2547 사탕 선생 고창영

문제

사탕 박사 고창영은 사탕 공장을 그만 두고 초등학교 선생님으로 취직했다.

오늘은 창영이네 반 학생들과 소풍을 가는 날이다. 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

풀이 과정

사탕 개수의 합이 너무 커지기 때문에 사탕 개수를 누적하는 동안 모듈러 연산을 이용한다.

코드

import sys

T = int(sys.stdin.readline())
for _ in range(T):
    empty = sys.stdin.readline()
    N = int(sys.stdin.readline())
    total = 0
    for __ in range(N):
        candy = int(sys.stdin.readline())
        total = (candy + total) % N         # 모듈러 연산
    result = 'NO'
    if total % N == 0:
        result = 'YES'
    print(result)

백준 2547 사탕 선생 고창영

좋은 웹페이지 즐겨찾기