본문 바로가기
알고리즘 문제/Leetcode

[Leetcode] 1103. Distribute Candies to People

by 햄과함께 2021. 12. 21.
320x100

문제 : https://leetcode.com/problems/distribute-candies-to-people/


candies 개의 사탕을 n명의 사람들에게 배분하려고 한다.

첫 번째 사람에게는 1개, 두 번째 사람에게는 2 ... n번째 사람에게는 n개의 사탕을 나눠준다.

이 후, 다시 첫 번째 사람에게 n+1, 두 번째 사람에게는 n+2 ... n번째 사람에게는 2n개의 사탕을 나눠준다.

이 절차를 모든 사탕을 나눠줄때까지 반복한다. 만일 나눠줄 사탕이 부족하다면 남은 사탕을 해당 사람에게 주고 해당 절차를 종료한다.

사탕을 모두 나눠줬을 때, 사람들이 가지는 사탕의 개수들의 리스트를 구하라.


candies를 1, 2, 3 .. 개씩 모든 사람들에게 차례대로 모든 사탕을 소요할 때까지 나눠준다.

int ind = 0;
while(candies > 0) {
    int candy = min(ind + 1, candies); // 남은 캔디 보다는 같거나 작아야 한다.
    answer[(ind++) % num_people] += candy;
    candies -= candy;
}

 

시간복잡도는 O(candies).


소스코드 : https://github.com/fpdjsns/Algorithm/blob/master/leetcode/easy/1103.%20Distribute%20Candies%20to%20People.cpp

320x100

댓글