본문 바로가기

Algorithm/Implementation

(C++) - 백준(BOJ) 2547 : 사탕 선생 고창영

반응형

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

 

2547번: 사탕 선생 고창영

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

www.acmicpc.net

%연산을 이용하는 문제였습니다.

(첫 글자 대문자 언어 이름 ) - 문제 명 답

 

 

📕 풀이방법

📔 입력 및 초기화

테스트 케이스 수 t를 선언 후 입력받습니다.

📔 풀이과정

t만큼 while loop를 수행합니다. 1. 학생 수 student, 전체 사탕의 수 totalCandy, 사탕의 수 candy를 선언해줍니다.  2. student만큼 loop를 돌며 각 학생이 가지고 있는 사탕의 수를 candy에 입력해줍니다. 3. 범위가 학생 수 10만이고 모두 10^18개의 사탕을 가지고 있는 경우 long long을 초과할 수 있으므로 totalCandy에 입력했던 candy를 누적해서 더한 후 바로 학생수로 나눠준 나머지를 저장해줍니다. 이는 모든 학생들에게 1개씩 미리 나눠주는 셈이 됩니다.

📔 정답출력

loop탈출 후 마지막 totalCandy를 모든 학생들에게 한 개씩 나눠줄 수 있으면 YES를, 아니면 NO를 출력해줍니다.


📕 Code

#include <bits/stdc++.h>
#define ll long long
using namespace std;
int t;
int main(){
    cin >> t;
    while(t--){
        ll student, totalCandy = 0, candy;
        cin >> student;
        for(int i = 0; i < student; i++) {
            cin >> candy;
            totalCandy = (totalCandy + candy) % student;
        }
        if(totalCandy % student) cout << "NO\n";
        else cout << "YES\n";
    }
}