코딩테스트 풀이/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;