코린이의 소소한 공부노트

[LeetCode/Easy] 1103. Distribute Candies to People 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 1103. Distribute Candies to People

무지맘 2022. 12. 20. 16:26

1. Input

1) 사탕의 개수를 담은 int 변수 candies

2) 사람의 수를 담은 int 변수 num_people

 

2. Output

1) 다음 규칙처럼 사탕을 나눠줬을 때, 사람들이 받은 사탕의 개수를 담은 int 배열

2) 규칙

- 1번 사람에게 사탕 1개를 준다.

- 2번 사람에게는 2개를 준다.

- 3번 사람에게는 3개를 준다.

- n번 사람에게 n개 주고 나서 사탕이 남는다면, 다시 1번부터 n+1개를, 2번에게 n+2개를 준다.

 

3. Constraint

1) 1 <= candies <= 10^9

2) 1 <= num_people <= 1000

 

4. Example

Input: candies = 10, num_people = 3 -> Output: [5,2,3]

설명: 3명이므로 반환할 배열의 길이도 3이다.

- 초기 세팅 -> [0,0,0], candies=10

- 1번에게 1-> [1,0,0], candies=9

- 2번에게 2-> [1,2,0], candies=7

- 3번에게 3-> [1,2,3], candies=4

- 1번에게 4-> [5,2,3], candies=0

- candies==0이므로 [5,2,3]을 반환한다.

 

5. Code

1) 첫 코드(2022/07/28)

int[] p = new int[num_people];
int left = candies, i = 0, c = 1;
while(left>0){
    if(left>=c){
        left -= c;
        p[i%num_people] += c++;
    }else{
        p[i%num_people] += left;
        break;
    }
    i++;
}
return p;