[LeetCode] Distribute Money to Maximum Children

아르당·5일 전

LeetCode

목록 보기
550/561
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

갖고 있는 금액을 나타내는 정수 money와, 그 돈을 나누어 주어야 할 아이들의 수를 나태는 정수 children이 주어진다.
다음 규칙에 따라 돈을 분배해야 한다.

  • 모든 금액은 분배되야 한다.
  • 모두 최소 1달러를 받아야 한다.
  • 아무도 4달러를 받지 않는다.

규칙에 따라 돈을 분배할 때, 정확히 8달러를 받을 수 있는 아이들의 최대 수를 반환해라. 만약 돈을 분배할 방법이 없다면 -1을 반환해라.

Example

#1
Input: money = 20, children = 3
Output: 1
Explanation: 8달러를 갖은 아이들의 최대 수는 1이다. 돈을 분배할 수 있는 한 방법이다.

  • 8달러를 첫 번째 아이에게 준다.
  • 9달러를 두 번째 아이에게 준다.
  • 3달러를 세 번째 아이에게 준다.

8달러를 받는 아이들의 수가 1보다 큰 분포는 존재하지 않는다는 것을 증명할 수 있다.

#2
Input: money = 16, children = 2
Output: 2
Explanation: 각 아이는 8달러를 갖게 할 수 있다.

Constraints

  • 1 <= money <= 200
  • 2 <= children <= 30

Solved

class Solution {
    public int distMoney(int money, int children) {
        if (money < children) {
            return -1;
        }

        money -= children;
        int count = money / 7;
        int remainder = money % 7;

        if (count == children && remainder == 0) {
            return children;
        }
        if (count >= children) {
            return children  - 1;
        }
        if (count == children - 1 && remainder == 3) {
            return count - 1;
        }
        return count;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글